• ベストアンサー

Excel VBAについて質問です

EXCEL VBAについての質問です。 以下の1,2を実行するにはどのようにプログラムを組めば 良いのでしょうか。本を買ってきて先週から勉強しているのですが上手くいきません。よろしくお願いします。 EXCEL2000を使用しています。 1)一分おきに特定の行ラベルにとんでコマンドを実行する 2)上記1で得た数値をその都度セルに貼り付けて一覧表(縦列、約7200行ぐらいになる予定)を作る。

質問者が選んだベストアンサー

  • ベストアンサー
  • at121
  • ベストアンサー率41% (85/206)
回答No.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

noname#128465
質問者

お礼

おお、長いですね。 ありがとうございます。 さっそく使わせていただきます。

その他の回答 (2)

  • macchan1
  • ベストアンサー率38% (52/136)
回答No.2

こんな感じののコードでどうでしょうか 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

noname#128465
質問者

お礼

ありがとうございます。とても助かります。 難しいですね。もっと勉強します。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

1.の動作が解りません。 コマンドを実行して、何処の値を取得するのでしょう? 単なる計算で算出可能な値なのか、ワークシートに都度入力されて変化する値を元に計算されるのか? 普通に書いたのでは、120時間?エクセルの操作が不可能になりますので、データの入力や確認が出来ません。

noname#128465
質問者

補足

1)ではWEBクエリ機能を使って外部からデータを取り込みます。5日間データを取り込むのみで、その間他の作業は行いません。

関連するQ&A