私は、セルが特定の値を含むように更新されるたびに実行したいSubを持っています。セルの値が更新されるたびにExcel VBAマクロを起動するにはどうすればよいですか?
今私は、次のようなコードを使用しています:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Cells.Count = 1 Then
If Target.Value = XYZ Then
my_sub a, b, c
End If
End If
End Sub
問題は、今私が直接これらのセルを編集するマクロのみ火災は、他の細胞の変化はこれらの細胞を強制しない場合は変更するということです。
さらに、これらのセルは明確に定義されていないため、たとえば「A5が変更されたとき」はハードコーディングできません。私は、ワークブック内のセルが更新されるたびに(手動または数式を通じて)自分の条件を満たすたびにこれを実行する必要があります。あなたのターゲットを監視する必要がある式を持つ単一のセルのみで、これは動作します提供
ここでは何が正しく機能していませんか?数式が変更されたときにこれが捕捉されないという事実はありますか?その場合は、 'Worksheet.Calculate'イベント(https://msdn.microsoft.com/en-us/library/office/ff838823.aspx)を参照してください。 – Mikegrann
また、上記のコードが実際に使用しているものと異なることを確認してください。そうであれば、代わりに 'If target.value =" XYZ "'を使用しますか?マクロでは何が動作しませんか? – BruceWayne
セルを直接編集すると起動します。他のセルの変更によって強制的に変更された場合は発生しません。 Target引数がないので、Worksheet.Calculateでそれを動作させる方法がわかりません。そして、いいえ、これはまさにコードではないので、XYZの引用符は問題ではありません – user1923052