1

私の目的は、アクティブなワークシートが編集されるたびに、約 20 個のセルに対してマクロを自動的に実行することです。すべてのセルに同じマクロを個別に配置する代わりに (コードが非常に長くてぎこちなくなります)、次のような for ループを作成したいと考えています。

for i="A10","A21","C3" ... etc
if target.address = "i" then
'execute macro
end if

これを行う方法がよくわかりません...おそらく別の方法がより良い選択肢でしょうか?

この件に関してご協力いただき、誠にありがとうございました。

4

2 に答える 2

2

イベントにご利用いただけますWorksheet_Change。以下はサンプルコードです。シートコードセクションにコードを配置する必要があります

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False

Dim rng As Range
Set rng = Range("A1:B5")
' If there is change in this range

    If Not Intersect(rng, Target) Is Nothing Then
        MsgBox Target.Address & " range is edited"
        ' you can do manipulation here
    End If

    Application.EnableEvents = True

End Sub
于 2013-06-05T09:19:00.923 に答える
0

イベントを使用しWorksheet_Changeて編集をキャプチャできます。http://msdn.microsoft.com/en-us/library/office/ff839775.aspxを参照してください。

イベント本体はRange、変更されたセルを表すオブジェクトを受け取ります。Application.Intersect次に、ターゲット セルの 1 つが変更された範囲内にあるかどうかを判断するために使用できます。

于 2013-06-05T09:18:50.297 に答える