1

ユーザーが列を自動入力しようとしたときにコードを実行できるようにするか、Worksheet_Change の実​​行中に自動入力であることを検出できるようにする必要があります。自動入力されたセルの値を変更するコードがあります。問題は、一度に複数のセルを編集するたびにこのコードが起動することです。

Private Sub Worksheet_Change(ByVal Target As range)
    If Target.Rows.count > 1 Then
4

3 に答える 3

2

AFAIK と私が間違っている可能性がありますが、Autofill イベントをトラップできる簡単な方法はありません。

これは、多くのシナリオで 1 より大きい値になるためTarget.Rows.count、オートフィルであったかどうかを確認する信頼性の低い方法です。Target.Rows.count例えば

  1. 複数のセルに貼り付けられたユーザー
  2. ユーザーが複数のセルを削除しました
  3. ユーザーが押したCTRL+ Z(元に戻す) 複数のセルなどを変更したなど...

Autofill を真剣にトラップしたい場合は、上記のすべてのケースを処理し、それが実際に Autofill イベントであることを確認するために絞り込む可能性を排除する必要があります。

于 2012-12-11T05:41:38.377 に答える
1
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 で発生しない場合

于 2012-12-11T01:26:04.803 に答える