私は様々なオプションのコンボボックスを持っています。オプションごとに、特定のセルが値に基づいてフォーマットされます。シートを連続的にチェックするExcel vbの機能はありますか?
数秒ごとに値が変化するため、プログラムは条件が満たされているかどうかを確認する必要があります。誰もプログラムが数秒ごとにシートをチェックできる方法を知っていますか?
私は様々なオプションのコンボボックスを持っています。オプションごとに、特定のセルが値に基づいてフォーマットされます。シートを連続的にチェックするExcel vbの機能はありますか?
数秒ごとに値が変化するため、プログラムは条件が満たされているかどうかを確認する必要があります。誰もプログラムが数秒ごとにシートをチェックできる方法を知っていますか?
お客様のニーズに応じて、3つのアプローチがお客様のニーズを満たしている可能性があります。
Excel Worksheet_Changeイベントは、再計算によるセル式の値の変更を除き、コードによる変更を含む、ワークシートがユーザーによって変更されたときに発生します。 VBAコードは通常次のようになります。
Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
' <test or set scope of action of the macro>
' <do something>
Application.EnableEvents = True
End Sub
Target引数は組み込みで、常にイベントを変更してトリガーしたセルを参照します。コードはワークシート・モジュールに配置する必要があります(ワークシート・タブを右クリックし、「コードを表示」を選択すると最も簡単にアクセスできます)。標準モジュールではありません。
ワークシートが自動的に再計算されるなど、ワークシートが再計算された後に、Worksheet_Calculateイベントが発生します。コードは次のようになります。
Sub Worksheet_Calculate()
Application.EnableEvents = False
' <do something>
Applicaton.EnableEvents = True
End Sub
このイベントは、ターゲットを提供していないことに注意してください、つまり、それは再計算のすべてのセルではなく、単一のもののためにトリガされます。コードで再計算が強制されない場合は、イベントを無効にしてから再度有効にする必要はありません。選択したセルだけを再計算する場合は、計算を手動(Application.Calculation = xlManual)に設定し、プロシージャを終了するときにApplication.Calculation = xlAutomaticを終了すると自動にリセットすることができます。 Worksheet_Changeイベントと同様に、コードはワークシート・モジュールに配置する必要があります。
最後に、ExcelのApplication.OnTimeイベントまたはWindowsタイマーを使用して定期的にコードを再実行するタイマーを設定できます。あなたの手続きには、タイマーを開始し、タイマーを停止するコードが含まれていなければなりません。 OnTimeイベントの使用例については、SO answerを参照してください。 Windowsタイマー(Application.OnTimeイベントと同様)の使用については、チップピアソンのレビューhereを参照してください。
私はコンボボックスが細胞の変化を駆動すると推測しますか? – brettdj
はい。それはすべて正常に動作します。しかし、セルの値はデータが変化すると変化します。 – Chane