ユーザーが列を自動入力しようとしたときにコードを実行できるようにするか、Worksheet_Change の実行中に自動入力であることを検出できるようにする必要があります。自動入力されたセルの値を変更するコードがあります。問題は、一度に複数のセルを編集するたびにこのコードが起動することです。
Private Sub Worksheet_Change(ByVal Target As range)
If Target.Rows.count > 1 Then
AFAIK と私が間違っている可能性がありますが、Autofill イベントをトラップできる簡単な方法はありません。
これは、多くのシナリオで 1 より大きい値になるためTarget.Rows.count
、オートフィルであったかどうかを確認する信頼性の低い方法です。Target.Rows.count
例えば
Autofill を真剣にトラップしたい場合は、上記のすべてのケースを処理し、それが実際に Autofill イベントであることを確認するために絞り込む可能性を排除する必要があります。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Or Target.Column <> 1 Then Exit Sub
MsgBox Target.Address ' your code goes here
End Sub
したがって、複数のセルが変更された場合、コードはアクティブにならないか、列 A で発生しない場合