- ベストアンサー
バックヤードで可動するようにするマクロ
- マクロの記録で作ったのですが、バックヤードで可動するようにできないでしょうか?現在はシートが移動したりマウスを動かすと読み込む時間がずれます。
- やりたいことは、バックヤードで可動するようにしたいのと、実行間隔を任意で指定したセルから実行間隔を取得したいのです。
- 質問者はマクロを記録しており、バックヤードで動作させる方法を知りたいとしています。また、実行間隔を任意のセルから取得したいとも述べています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> 動きが渋くなり実行間隔が延びてしまいます。 このマクロ以外に別のコードを走らせてデータを取得しているのでしょう? その処理に時間がかかるのではないでしょうか。 下記のコードをこちらのエクセル2000で実行すると、5秒を指定するとほぼ5秒間隔で作動しました。(これ以外何のマクロも動かしてないからでしょうけど) Sub Macro2() With Sheets("DATA") Application.Calculation = xlCalculationManual .Range("A1:C1").Value = Sheets("表示").Range("B10:D10").Value .Range("A1:C1").Insert Shift:=xlDown Application.Calculation = xlCalculationAutomatic If .Range("J8").Value = 999 Then Application.Run "ストップ3" Else Application.Run "Macro3" End If End With End Sub Sub Macro3() Dim s As String With Sheets("DATA") .Range("J8").ClearContents s = "00:00:" & Format(.Range("J7"), "00") Application.OnTime Now + TimeValue(s), "Macro2" End With End Sub Sub ストップ3() Sheets("DATA").Range("J8").Value = 999 End Sub
その他の回答 (1)
- merlionXX
- ベストアンサー率48% (1930/4007)
勘違いしているかもしれませんが、マクロ作動時にシートが自動的に切り替わるのをやめ、実行間隔の秒数を任意のセルの数値とするということでしょうか。 秒数を入れるセルをDATAのJ7にした場合の例です。 Sub Macro2() With Sheets("DATA") .Range("A1:C1").Value = Sheets("表示").Range("B10:D10").Value .Range("A1:C1").Insert Shift:=xlDown If .Range("J8").Value = 999 Then Application.Run "ストップ3" Else Application.Run "Macro3" End If End With End Sub Sub Macro3() Dim s As String With Sheets("DATA") .Range("J8").ClearContents s = "00:00:" & Format(.Range("J7"), "00") 実行間隔 = Now + TimeValue(s) Application.OnTime TimeValue(実行間隔), "Macro2" End With End Sub Sub ストップ3() Sheets("DATA").Range("J8").Value = 999 End Sub
お礼
ありがとうございます。 試してみたのですが、動きが渋くなり実行間隔が延びてしまいます。 どうすれば良いのでしょうか? 例 5秒設定にすると、10秒ぐらい間隔で取得します。
お礼
すいません。マクロの残骸が動いていたようです。 本当に助かりました、ありがとうございます。 がんばってVBAを勉強していきたいと思います。