• 締切済み

Excelマクロで、稼働中のマクロを確認する方法

Excelマクロで、稼働中のマクロを確認する方法 ちょっと質問なのですが、 VBAで、 いま動いているマクロが何なのかを確認する方法はあるのでしょうか? よろしくお願いします。

みんなの回答

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

OnTime の場合は、話がぜんぜん方法が違います。 こういうものは、直接、教わったほうが早いです。以下は、サンプルコードです。 基本的には、OnTime は、ストックする時間(myTime)はひとつだけです。 リセットする時は、OnTime_Reset を使用します。 10秒ごとに、シートに時間を書き込むマクロです。 '// Dim myTime As Date 'モジュールレベル変数 Dim flg As Boolean Sub Ontime_Set()  'トグルになっている  If flg = False Then   flg = True   myTime = Now + TimeSerial(0, 0, 10)  ElseIf flg = True Then   flg = False  Else   Exit Sub  End If  If Range("A1").Value = "" Then   Range("A1").Value = Format(Now, "hh:mm:ss")  End If Application.OnTime EarliestTime:=myTime, _   Procedure:="my_Procedure", Schedule:=flg  If flg = False Then   myTime = 0  End If End Sub Sub my_Procedure() '実行   With Range("A65536").End(xlUp).Offset(1)     .Value = Format(Now, "hh:mm:ss")     flg = False     myTime = 0   End With   Call Ontime_Set End Sub Sub Ontime_Reset() 'タイマーリセット On Error Resume Next Application.OnTime EarliestTime:=myTime, _   Procedure:="my_Procedure", Schedule:=False If Err.Number > 0 Then  MsgBox "OnTime設定はされていません。", 64  Err.Clear  flg = False Else  MsgBox myTime & "の設定は解除されました。", 64  flg = False  myTime = Empty End If End Sub

mickey428
質問者

お礼

ありがとうございます! これからは、あらかじめOnTimeを解除するマクロを入れていきます。 Error処理のコードも参考になりました。

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

「いま動いているマクロが何なのかを確認する方法はあるのでしょうか?」 自分で組んだマクロが分からないということは基本的にはありえません。どういうことか、もう少し詳しい説明が必要だと思います。 すべてのサブプロシージャやPrivate ステートメントに、ブレークポイントをつけて、確認する法はありますが、あまり賢い方法ではないと思います。メインプロシージャ自体は、自分が命令するから分かります。 なお、無限ループなどが発生しているような場合に、捕まえる方法としては、Ctrl+Pause で、Pause ボタンを何度か押せば、ハングしていなければ、止まります。そこで、VBEがロックされていなければ、エディタ・ペインの窓を見れば、どのマクロが走っているか分かります。しかし、よほど大きなマクロでない限りは、今走っているマクロを途中で調べることは無理だと思います。

mickey428
質問者

お礼

説明が必要、、、確かにそうですね。申し訳ありませんでした。 もともとは稚拙なコードを書いてしまって、 Ontimeで繰り返すマクロが複数起動&終了管理が出来ていない状態が発生してしまったことから、 質問文にあるような便利機能がないかと思ったのでした。 心当たりのマクロにNo1さんのコードを付けて、 あとは終了管理を付けていくことで、当面対応していきたいと思います。 Ctrl+Pause は初耳でした、ありがとうございます。

  • mar00
  • ベストアンサー率36% (158/430)
回答No.2

ステップインを使って確認しては? http://members.jcom.home.ne.jp/rex-uchida/vba110.htm

mickey428
質問者

お礼

これは便利な機能ですね。 ありがとうございます。 活用していきます。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

Sub Sample01()   Application.StatusBar = "呼び出すマクロの名前" 'StatusBarに表示   Call マクロ 'マクロ呼び出し   Application.StatusBar = "" 'StatusBarの表示削除 End Sub とでもして、ステータスバーに表示させたらどうでしょう?

mickey428
質問者

お礼

さっそくの回答ありがとうございます。 この方法は簡単で便利ですね。 疑わしいマクロに入れて、どれが更新されているか調べることができます。

関連するQ&A

専門家に質問してみよう