質問1: 10秒間隔で”解析1”のマクロを実行する下記のPrgですと待機の10秒間 ビジーになってしまいます。解決方法ご存知の方教えて下さい。
Sub 解析1実行用ループマクロ()
Do
指定時刻 = Now + TimeValue("0時00分10秒") '10秒後
待ち時間 = TimeValue("0時00分05秒")
Application.OnTime TimeValue(指定時刻), "解析1", TimeValue(待ち時間)
Loop
End Sub
(マクロ集引用しただけで理解はあまりできていません。)
質問2: ループを終了させるのにEscで終わらせています。Escをボタンに登録しようと思ってますが他にスマートな方法有りますでしょうか?
No.4ベストアンサー
- 回答日時:
こんばんは。
>Wendy02さん助言の +待ち時間 の件ですが まだうまく機能していません。
というか、マクロ自体が違っていませんか?
私は、うっかりしていたけれども、そのマクロでは、数限りなく設定したら、終われないです。あくまでも、私の考える方法ではありませんが、OnTime のループは以下のようにするのではないでしょうかしらね。
'こちらは、必ず標準モジュールです。
Public flg As Boolean
Sub 実行用ループマクロ()
Dim 指定時刻 As Date
Dim 待ち時間 As Date
指定時刻 = Now + TimeValue("0時00分10秒") '10秒後
待ち時間 = 指定時刻 + TimeValue("0時00分05秒")
If flg = True Then Exit Sub
Application.OnTime TimeValue(指定時刻), "実行用ループマクロ", TimeValue(待ち時間)
Call 解析1
End Sub
本来は、ボタンにしたほうがよいです。
以下は、トグルになっています。スタートを押すと、次は、ストップになります。
Sub StartMacro()
'スタート・終了ボタン
flg = Not flg
If flg = False Then
Call 実行用ループマクロ
Else
MsgBox "終了しました", 64
End If
End Sub
この回答への補足
大大大成功です!終了もEscで逃げていたんですがスマートに終了できるようになりました。(理解できてない点が悲しいですが… 勉強します。)ポップアップされる終了ボタンは待機時間(10秒)内に押すと マクロが再起動してしまいますが 商品ではないので 全く問題ないです。有り難うございました。助かりました。
補足日時:2007/12/19 07:14No.3
- 回答日時:
こんばんは。
#2 の回答者です。一応、今回は、「経験者」ということにさせていただきます。
>2~3秒間隔ぐらいのRSS入力detaを使用しています。
やっぱりそうですか。とりあえず、ちょっと様子を見させていただいてよいですか?
もし、現行で、可能なら、あえて私の考えた方法は必要ありません。
私としては、元の「解析1」のマクロが気になります。2~3秒では、かなり忙しいですね。
いろんなサイクルでおっしゃる人がいます。1~2分だという人もいました。
あまり短いと、その実行マクロ側の内容によっては、場合によって、マクロが画面の変化に影響を受ける可能性があるのと、もうひとつは、RSSも一種のマクロなので、割り込みされてしまうかもしれません。本来、RSSでデータが入ってくるときに、マクロが動いていれば、どちらかがとまるはずだと思っています。
それは、新しいバージョンの、RSS ですよね。私は、そちらに加入していないのですが、一応、前の版は、前のパソコンにインストールしてあります。今年になってから、バージョンが上がって、OLEになったような気がします。
それは、本来、OnTime ではなく、イベント方式のほうが良いのですが、実際に、今のバージョンで試したわけではないので、あまり自信があって書いているわけではありません。数ヶ月前の人は、私の考えた方法で、"問題なし"とおっしゃっていたいています。それは、そのマクロ止める方法も同時に可能です。
こんばんは お世話になります。 最終目的は社内のサーバーに集まってくるdata処理を思考したいと思っているのですが 今は楽天証券のRSSdata を利用してテストしています。数秒間隔(言葉上はリアルタイム)でメインの同一シート内のdataが順次書き換えられていきます。(同時に別の処理もしていますがフリーズとかは発生していません。)定期的(ここでは10秒ごと)にフィルーターで抽出し、dataを比較等処理しようとしています。これをマクロ化したいのですが いろいろと難問にぶつかって…。
AnsNo1 zap35 さん助言の DoEvents は現状のマクロを停止して 次のマクロ(など)を処理する場合のようなので 別のところで使わせていただきます。(Functionの警告の件解決できました。)有り難うございました。
AnsNo2 Wendy02さん助言の +待ち時間 の件ですが まだうまく機能していません。もう少し試させて下さい。 (前列で定義された指定時刻の内容が( )内に代入されると思っていたのですが。)バックバージョン探して読んでみます。
(苦しんでた不起動はマクロ内のカーソルで指定する位置がずれて処理できないところがわかったので解決しました。)
皆さん有り難うございます。
No.2
- 回答日時:
こんにちは。
ご質問の趣旨とは違いますが、
待ち時間 = TimeValue("0時00分05秒")
とありますが、OnTime で、待ち時間が入れられましたでしょうか?
(指定時刻 +待ち時間) を入れるように思います。
以前も、同じようなコード見たことがありますが、その「解析1」プロージャーの解析に対応するデータは、10秒後に変わるという意味ですね。そのデータは、どのように入るのですか?DoEvent で成功すればよいのですが、そうでないとすると、そのデータの入り自体を調べたほうがよいと思います。ExcelのワークシートはRSSのアドインやDDEインポートではありませんか? もし、そうなら、今の状態では、かなり難しいように思います。
助言ありがとうございます。何も入れずにコピーのまま使ってます。2~3秒間隔ぐらいのRSS入力detaを使用しています。
(マクロの再登録何度もトライしてたら「RangのSortメソッドが失敗」?とかでボタン起動ができなくなり苦しんでます。)解決したら追記してみます。ありがとうございます。
No.1
- 回答日時:
Sub Auto_open()
Call 解析1
End Sub
Sub 解析1()
'解析処理
' 解析処理を記述
指定時刻 = Now + TimeValue("0時00分10秒") '10秒後
待ち時間 = TimeValue("0時00分05秒")
Application.OnTime TimeValue(指定時刻), 解析1, TimeValue(待ち時間)
DoEvents
End Sub
この回答への補足
すみません教えて頂けませんか?
prgコピー してトライしてますが 解析1 内末部に 追記入した「Application.OnTime TimeValue(指定時刻), 解析1, TimeValue(待ち時間)」行の 、解析1、のところにカーソルが点灯して 「Function又は変数が必要です」と警告がでます。記入間違いないか 他のprg
名に置き換えとか試行してるのですが 同じ結果です。お時間有る時で結構ですので 助言頂けたら有難いです。(Auto_openと解析1のマクロ名は内容によって変更してます。登録済みの名称を使用しています)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセル マクロ 指定日の指定時刻にプロシージャを実行 4 2022/04/17 16:44
- Excel(エクセル) エクセルVBA マクロ処理中のポップアップメッセージについて 1 2023/08/04 21:34
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Excel(エクセル) Excel について <TIMEVALUE> 3 2022/10/20 15:57
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/11 11:05
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/10/03 09:55
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ローマ字→カタカナへ変換(エク...
-
マクロ 実行ボタンを押さずに...
-
複数ファイルにある特定のシー...
-
エラーになってないのにVBA...
-
《エクセル2000》非表示になっ...
-
Excel VBA のdebug(F8キー) が...
-
EXCELのセルへ、デジタル時計を...
-
【Excel VBA】エラー番号400
-
エクセル グラフの軸の最小値最...
-
Accessのクエリを実行するショ...
-
Excelを開いた時に表示さ...
-
ワードからエクセルへ貼り付け...
-
ExcelVBAで、タイマー割り込み...
-
エクセルに画像を貼付け縮小す...
-
エクセルVBA:エラー時にはマク...
-
ワードで画像を自動で挿入する方法
-
モジュール内のマクロを全て実...
-
AccessのテーブルデータをExcel...
-
エクセルで複数のシートをまと...
-
Excel文字列中の太字(Bold)部分...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ローマ字→カタカナへ変換(エク...
-
マクロ 実行ボタンを押さずに...
-
複数ファイルにある特定のシー...
-
EXCELのセルへ、デジタル時計を...
-
Excel VBA のdebug(F8キー) が...
-
エラーになってないのにVBA...
-
Excelを開いた時に表示さ...
-
Wordで「原稿用紙○枚」を換算す...
-
ワードからエクセルへ貼り付け...
-
エクセルで複数のシートをまと...
-
エクセルのマクロ機能で前のシ...
-
エクセル グラフの軸の最小値最...
-
TeraTermのマクロについて
-
Excelの改ページ 同シート内で...
-
EXCEL 複数のシートの同一の位...
-
ワードで画像を自動で挿入する方法
-
Excelのワークシート上に検索窓...
-
モジュール内のマクロを全て実...
-
Excel2000 データの並べ替えで...
-
Excelマクロでオプションボタン...
おすすめ情報