- 締切済み
EXCEL2007 VBA アクティブでないワークシートの名前を取得したい
Sheet1とSheet2の【A1セル】【B1セル】には以下の処理が入っています。また2つのシートにはVBAを使って、再計算がされるたびに自身のシート名を表示するメッセージボックスを出力する処理を記述しています。 【A1セル】 リアルタイムで値が送られてくる。 【B1セル】 A1セルの値を使った式 【VBA】 Private Sub Worksheet_Calculate() MsgBox ************** End Sub ここからが質問なんですが、Sheet3をアクティブシートにしている場合、VBAの「*****」の部分に何と記述すれば、再計算されたシート名を取得できますか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 ご質問内容は、Sheet3をアクティブシートにしているけれども、Sheet1 と Sheet2 のどちらかにデータがDDEかOLEで入ってくるというわけですか?その入ってきた方のデータがどちらのシートか、というのを見つけたい、というご質問ですか? データの流入は、安定していますか? さて、 > Private Sub Worksheet_Calculate() > MsgBox ************** > End Sub 「再計算がされるたびに自身のシート名を表示するメッセージボックスを出力する処理を記述しています。」 あまりメッセージボックスで出すのは賛成しません。メッセージボックスを、いちいち、ボタンをクリックしないと、マクロが止まってしまいます。メッセージボックスは、ユーザーの指示を待機しているわけで、VBAでコントロールできるものもありますが、データの流入とぶつかるとうまく行かないように思います。 私は、アプリーションの一番下のステータスバーに表示することをお勧めします。音が必要なら、Beep を入れればよいと思います。シートのCalculate イベントを発生するために、=NOW() の数式をそれぞれのシートに置きます。 '------------------------------------------- '標準モジュール Public Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long) '------------------------------------------- 'シート1とシート2 のシートモジュールに同じ内容のマクロを置く。 'ThisWorkbook モジュールのSub Workbook_SheetCalculate(ByVal Sh As Object)は、こちらではハングしました。 Private Sub Worksheet_Calculate() On Error GoTo EndLine Application.EnableEvents = False 'Beep ''音を鳴らす Application.StatusBar = Me.Name DoEvents Sleep 3000 EndLine: Application.StatusBar = "" Application.EnableEvents = True End Sub