- ベストアンサー
Excel VBAについて質問です
EXCEL VBAについての質問です。 以下の1,2を実行するにはどのようにプログラムを組めば 良いのでしょうか。本を買ってきて先週から勉強しているのですが上手くいきません。よろしくお願いします。 EXCEL2000を使用しています。 1)一分おきに特定の行ラベルにとんでコマンドを実行する 2)上記1で得た数値をその都度セルに貼り付けて一覧表(縦列、約7200行ぐらいになる予定)を作る。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Application.OnTime を使う。 インターバル時間 = 0.1 '分 ?? サンプル数 = 4 ' 回?? を自分の条件(1 分 7200 回)に合わせて 「繰返し処理」に自分の処理を書き込み ↓マクロモジュールに貼って繰返し起動を実行↓ Public 終了時刻 As Date Public インターバル時間 As Single Public サンプル数 As Integer Sub 繰返し起動() ' インターバル時間 = 0.1 '1分 ?? サンプル数 = 4 '7200 回?? 終了時刻 = Now + インターバル時間 * サンプル数 * TimeValue("00:01:00") MsgBox Format(終了時刻, "データ取得終了予定は YYYY/MM/DD HH:MM です。") サンプル数 = 0 処理実行時刻 = Now + インターバル時間 * TimeValue("00:01:00") '分に変換 Application.OnTime 処理実行時刻, "繰返し処理" ' End Sub Private Sub 繰返し処理() サンプル数 = サンプル数 + 1 'データ取得処理 ⇒ 取得データ 'データ取得処理 ⇒ 取得データ 'データ取得処理 ⇒ 取得データ 'データ取得処理 ⇒ 取得データ 記録行 = Sheets(1).Cells(65536, 1).End(xlUp).Offset(1, 0).Row Sheets(1).Cells(記録行, 1) = CStr(サンプル数) Sheets(1).Cells(記録行, 2) = Format(Now, "yyyy/mm/dd") Sheets(1).Cells(記録行, 3) = Format(Now, "hh:mm:ss") Sheets(1).Cells(記録行, 4) = 取得データ If 終了時刻 < Now Then MsgBox Format(Now, " YYYY/MM/DD HH:MM にデータ取得を終了しました。") Else 処理実行時刻 = Now + インターバル時間 * TimeValue("00:01:00") '分に変換 Application.OnTime 処理実行時刻, "繰返し処理" End If End Sub
その他の回答 (2)
- macchan1
- ベストアンサー率38% (52/136)
こんな感じののコードでどうでしょうか For i = 1 To 7200 特定の行ラベルのコピー Sheets("コピー先のシート名").Activate Range("A65536").End(xlUp).Activate ActiveCell.Offset(1, 0).Select Selection.PasteSpecial Paste:=xlValues Application.Wait Now() + TimeValue("00:01:00") Next i
お礼
ありがとうございます。とても助かります。 難しいですね。もっと勉強します。
- hana-hana3
- ベストアンサー率31% (4940/15541)
1.の動作が解りません。 コマンドを実行して、何処の値を取得するのでしょう? 単なる計算で算出可能な値なのか、ワークシートに都度入力されて変化する値を元に計算されるのか? 普通に書いたのでは、120時間?エクセルの操作が不可能になりますので、データの入力や確認が出来ません。
補足
1)ではWEBクエリ機能を使って外部からデータを取り込みます。5日間データを取り込むのみで、その間他の作業は行いません。
お礼
おお、長いですね。 ありがとうございます。 さっそく使わせていただきます。