• 締切済み

EXCEL2007 VBA アクティブでないワークシートの名前を取得したい

Sheet1とSheet2の【A1セル】【B1セル】には以下の処理が入っています。また2つのシートにはVBAを使って、再計算がされるたびに自身のシート名を表示するメッセージボックスを出力する処理を記述しています。 【A1セル】  リアルタイムで値が送られてくる。 【B1セル】  A1セルの値を使った式 【VBA】  Private Sub Worksheet_Calculate()   MsgBox **************  End Sub ここからが質問なんですが、Sheet3をアクティブシートにしている場合、VBAの「*****」の部分に何と記述すれば、再計算されたシート名を取得できますか?

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 ご質問内容は、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

関連するQ&A