プロが教えるわが家の防犯対策術!

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

ちょっと質問なのですが、
VBAで、
いま動いているマクロが何なのかを確認する方法はあるのでしょうか?

よろしくお願いします。

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/08/06 09:39

「いま動いているマクロが何なのかを確認する方法はあるのでしょうか?」



自分で組んだマクロが分からないということは基本的にはありえません。どういうことか、もう少し詳しい説明が必要だと思います。

すべてのサブプロシージャやPrivate ステートメントに、ブレークポイントをつけて、確認する法はありますが、あまり賢い方法ではないと思います。メインプロシージャ自体は、自分が命令するから分かります。

なお、無限ループなどが発生しているような場合に、捕まえる方法としては、Ctrl+Pause で、Pause ボタンを何度か押せば、ハングしていなければ、止まります。そこで、VBEがロックされていなければ、エディタ・ペインの窓を見れば、どのマクロが走っているか分かります。しかし、よほど大きなマクロでない限りは、今走っているマクロを途中で調べることは無理だと思います。
    • good
    • 0
この回答へのお礼

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

心当たりのマクロにNo1さんのコードを付けて、
あとは終了管理を付けていくことで、当面対応していきたいと思います。

Ctrl+Pause は初耳でした、ありがとうございます。

お礼日時:2010/08/03 22:53

ステップインを使って確認しては?


http://members.jcom.home.ne.jp/rex-uchida/vba110 …
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/08/03 22:54

Sub Sample01()


  Application.StatusBar = "呼び出すマクロの名前" 'StatusBarに表示
  Call マクロ 'マクロ呼び出し
  Application.StatusBar = "" 'StatusBarの表示削除
End Sub

とでもして、ステータスバーに表示させたらどうでしょう?
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/08/03 22:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A