
No.2ベストアンサー
- 回答日時:
こんにちは。
>VBAではJavaでいうスレッドのようにバックで動くクラスは無いのでしょうか?
Excel VBAの場合は、そういう機能に対するものは、おそらくはクラスとは言わないですが、厳密にはありませんね。
>これだと毎5秒ごとにマクロを実行ができないですよね。なのでスレッドを考えました。
それは出来ますが、ワークシートの作業に対して、完全にバックで動かし、影響をなくすのは難しいです。実際は、以下でいう、'指定時刻に実行するマクロ名' マクロの内容にも依存してきます。このマクロ側が、どういう性格なものか分からないと、ちょっと難しいですね。ここのカテゴリで一番良くある例としては、楽天のRSSがあります。
お礼側に出ていコードに手を加えてみました。
'おそらく、標準モジュールのほうがよいでしょう。
Private MacroStop As Boolean
Sub 指定時刻にマクロを実行する()
Dim myWait As Integer
Dim 指定時刻 As Date
myWait = 5 '秒
指定時刻 = Now + TimeSerial(0, 0, myWait)
If MacroStop = False Then
Application.OnTime 指定時刻, "指定時刻にマクロを実行する"
Call 指定時刻に実行するマクロ名
Else
MacroStop = False
End
End If
End Sub
Sub 指定時刻に実行するマクロ名()
Cells(1, 1).Value = Cells(1, 1).Value + 1
End Sub
Sub タイマー停止()
MacroStop = True
End Sub
No.1
- 回答日時:
こんにちは。
私は、ずいぶん、そのコードは書いたけれど、かなり難問のひとつだと思います。理由は、メモリの占有率にあるのですね。タイマーイベントは、VB6 のもので、Excelにはありません。
ですから、Excelでは、どうしても、思ったものが作れないのです。ある方は、APIタイマーを使う人がいますが、責任が持てません。
まず、簡易型を紹介します。1秒ごとに数値が増えるようになっています。ただし、問題点はあります。
Private Sub CommandButton1_Click()
Dim Start As Date
Dim NT As Date
Dim OT As Date
Dim Cnt As Long
On Error GoTo EndLine
'Esc キーでマクロを抜ける
Application.EnableCancelKey = xlErrorHandler
Start = Time
Cnt = 1
Do
NT = Time
If NT > OT Then
Cells(1, 1).Value = Cnt
Cnt = Cnt + 1
OT = NT
End If
Loop While NT < Start + TimeValue("00:10:00") '10分まで
EndLine:
End Sub
ご回答有難うございます。
VBAではJavaでいうスレッドのようにバックで動くクラスは無いのでしょうか?
それがあれば、スレッド内で時間を現在の時間を見ながら処理が行えるように思えるのですが。
下記はググッて見つけた指定時間にマクロ実行するサンプルコードです。
これだと毎5秒ごとにマクロを実行ができないですよね。なのでスレッドを考えました。
Sub 指定時刻にマクロを実行する()
指定時刻 = TimeValue("HH:MM:SS") '指定時刻 ※1
待ち時間 = TimeValue("HH:MM:SS") '指定時刻に他プロシージャが実行中の場合の待ち時間 ※2
Application.OnTime TimeValue(指定時刻), _
"指定時刻に実行するマクロ名", _
TimeValue(待ち時間)
End Sub
Sub 指定時刻に実行するマクロ名()
' 'ここへマクロを記入
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 通信費・水道光熱費 実家の家電なんですが、昨夜20時頃知人から電話があったそうです。母は子機の方でとり電話を切ったつもり 3 2022/09/03 11:13
- その他(悩み相談・人生相談) 失敗に落ち込んでいます 10 2023/01/01 20:18
- その他(AV機器・カメラ) ボイスレコーダーの機能について 1 2022/11/15 22:37
- エアコン・クーラー・冷暖房機 夜の間に冷え込むので、朝エアコンが始動する様にタイマーをかけて寝たところ、エアコン作動時間前に、エア 5 2022/12/23 07:44
- 冷蔵庫・炊飯器 炊飯器のタイマー 7 2022/12/15 21:05
- スピーカー・コンポ・ステレオ CD/MD/USBとラジオ(AM/FM)が使えるコンポ 1 2022/10/08 17:58
- その他(パソコン・スマホ・電化製品) オフィスの電源をある時間とめたい。 わが社では、仕事時間が終わったにもかかわらず、タイムカードを押さ 5 2023/04/13 17:50
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Visual Basic(VBA) ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について 1 2022/04/23 11:49
- 工学 シーケンス回路 近接チャタリング 近接オフ保持30秒後にオン 3 2022/11/14 18:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ローマ字→カタカナへ変換(エク...
-
エクセルでマクロを実行したい...
-
一部マクロを変更したいので教...
-
エクセル2000の保護について
-
マクロで、アクティブでないシ...
-
Excelのワークシート上でコンボ...
-
エクセルの関数に詳しい方、教...
-
マクロ 画面更新の停止
-
Excel VBA のdebug(F8キー) が...
-
エクセルのマクロ機能で前のシ...
-
EXCEL 複数のシートの同一の位...
-
エクセルで写真取り込み方法
-
実行されません
-
EXCELのセルへ、デジタル時計を...
-
TeraTermのマクロについて
-
パワーポイントで教えていただ...
-
Excelを開いた時に表示さ...
-
マクロ 実行ボタンを押さずに...
-
【エクセル】 キーを押すと、...
-
accessのテーブルのリンクのフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ローマ字→カタカナへ変換(エク...
-
マクロ 実行ボタンを押さずに...
-
Excelを開いた時に表示さ...
-
Excel VBA のdebug(F8キー) が...
-
エラーになってないのにVBA...
-
EXCELのセルへ、デジタル時計を...
-
複数ファイルにある特定のシー...
-
エクセル グラフの軸の最小値最...
-
モジュール内のマクロを全て実...
-
Wordの画面を左右にスクロール...
-
ワードからエクセルへ貼り付け...
-
エクセルのマクロ機能で前のシ...
-
EXCEL 複数のシートの同一の位...
-
Excelマクロでオプションボタン...
-
エクセルで複数のシートをまと...
-
VBAでEXCELに埋め込んだPDFを開...
-
【Excel VBA】エラー番号400
-
EXCEL2000 VBA マクロ実行中に...
-
エクセルでマクロ実行中に任意...
-
Wordで「原稿用紙○枚」を換算す...
おすすめ情報