- ベストアンサー
VBA 5分間間隔でデータ記録
こんにちわ。 いつも諸先輩方に教えて頂きありがとうございます。 感謝しております。 早速ですが以下のようなVBを教えてもらいまして、 C3のセルにリアルタイムで変化する数字があります。 それを、3秒おきに時間とともにC6から順に記録して 1分間溜まったら、 E6に時間、 F6その1分間の最初の値、 G6にその1分間での最高値 H6にその1分間での最低値 I6にその1分間での最後の値 が順番に記録されるようになっております。 このマクロを改正して、 (1)1秒感覚でC3から下へ順に記録。 (2)5分間隔でE6^I6に4種の値を下へ順に記録 (このデータはずっと起動している間は下へ記録し続けたいです) というように変更したいのですがうまくいかず、四苦八苦しておりました。 お忙しいところ申し訳ありませんが、 ヒントなるものでも結構ですので教えて頂ければ幸いです。 以上宜しくお願いいたします。 UNO ========================================================= Option Explicit Public STOP_B As Boolean Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub ストップ() STOP_B = False End Sub Sub スタート() Dim i As Integer Dim t As Integer Dim n As Integer Dim R As Range Dim timenow As Variant i = 6 n = 6 STOP_B = True Do While True t = 0 timenow = Format(Now(), "HH:mm") While t < 300 Call Sleep(10) DoEvents t = t + 1 Wend If timenow = Format(Now(), "HH:mm") Then Sheet1.Cells(i, 3).Value = Sheet1.Range("C3").Value i = i + 1 Else Sheet1.Cells(n, 5).Value = timenow Sheet1.Cells(n, 6).Value = Sheet1.Cells(6, 3).Value Set R = Sheet1.Range(Sheet1.Cells(6, 3), Sheet1.Cells(i, 3)) Sheet1.Cells(n, 7).Value = WorksheetFunction.Max(R) Sheet1.Cells(n, 8).Value = WorksheetFunction.Min(R) Sheet1.Cells(n, 9).Value = Sheet1.Cells(i - 1, 3).Value Sheet1.Range(Sheet1.Cells(6, 3), Sheet1.Cells(i, 3)).Clear i = 6 Sheet1.Cells(i, 3).Value = Sheet1.Range("C3").Value i = i + 1 n = n + 1 End If If STOP_B = False Then Exit Sub End If Loop End Sub Function xSleep(ByVal dwMilliseconds As Long) Call Sleep(dwMilliseconds) End Function =====================================================
- みんなの回答 (3)
- 専門家の回答
お礼
Wizard_Zeroさま 早速のご回答ありがとうございます! 1秒、5分おきに記録できるようになりました^^ しかし、Eの列に日付と時間が記録されるようになっているのですが 1時間ほど起動させておくと止まってしまうようです・・・ 大変申し訳ありませんが 起動させている間は永遠に記録できるようにすることは 可能なのでしょうか??