Chrisは、一意でない情報が列に入力されるのを正常に阻止するデータ検証手法を使用しています。 (この手法は、_ExcelTips_の以前の号で説明されています。)ただし、データ検証にはまだ問題があると彼は正しく指摘しています。誰かが情報をセルに貼り付けて、すべてのチェックを正常にバイパスできます。

たとえば、セルA8に「George」と入力してから「George」と入力すると

A9では、定期的なデータ検証により、予想どおりエラーが生成され、入力しようとしている値が一意ではないことが示されます。

ただし、セルA8に「George」と入力し、そのセルをコピーしてセルA9に貼り付けると、データ検証エラーはトリガーされません。貼り付けは許可されます。

Excelではこれを直接回避する方法はありません。ただし、貼り付けを実行しようとするたびに、Excelにチェックを実行させることができます。次のマクロについて考えてみます。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

On Error Resume Next     For Each TmpRng In Target         TmpVal = TmpRng.Validation.Type         If TmpVal > 0 Then             If Application.CutCopyMode = 1 Then                 MsgBox "You cannot paste into validated cells."

Application.CutCopyMode = False                 Exit Sub             End If         End If     Next End Sub

このマクロは、ワークシートで選択が変更された場合にのみ実行されます。 (このコードは、ワークシートのコードウィンドウにある必要があります。)ターゲットセル(選択されているセル)を調べ、ユーザーが検証がアクティブなセルに貼り付けようとすると、許可されません。

さらに、エラーを示すダイアログボックスが表示されます。

このルーチンは、データ検証済みセルへの貼り付けが行われているかどうかを確認するだけであることに注意してください。そうである場合、エラーが生成されます。

ルーチンは、貼り付けられているものがターゲットセルの検証ルールで実際に許可されているかどうかを確認しません。それははるかに複雑で、かなり多くのコーディングが必要になります。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

link:/ excelribbon-ExcelTipsMacros [ここをクリックして、新しいブラウザタブでその特別なページを開きます]

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(2449)は、Microsoft Excel 97、2000、2002、および2003に適用されます。