|
▼青木w さん:
おはようございます。
新規ブックにて試してください。
>常に変動しているA1からJ1の10個の数値を、K1からT1に記録する方法
>最新のA1:J1の数値をK1:T1に書き込み、
>古い分は2行目3行目〜と順次下に押しやられるようにして
この部分だけのコードは・・・、
標準モジュール(Module1)に、
'===========================================================
Sub セルK1_T1を行下げしてセルA1_J1を代入する()
Dim rng As Range
Set rng = Range("a1:j1")
With Range("K1:T1")
.Insert Shift:=xlDown
.Offset(-1, 0).Value = rng.Value
End With
Set rng = Nothing
End Sub
後は、これを繰り返すコード。
別の標準モジュール(Module2)にスケジュール管理プロシジャー群
'===========================================================
Private exetm As Variant '次の実行時刻
Private lmcnt As Long '繰り返し回数
Private ccnt As Long '現在の実行回数
Private reptm As Variant '実行間隔時間
Private prcnm As String '実行プロシジャー名
Sub mc_schedule(ByVal on_off As Boolean, _
Optional ByVal limit_cnt As Long = 0, _
Optional ByVal rep_time As Variant, _
Optional ByVal proc_name As String, _
Optional ByVal F_Exetm As Variant)
'マクロ実行のスケジュールの設定を行う
'input : on_off --- true スケジュール設定 false---スケジュール解除
' limit_cnt 実行を繰り返す回数 -1の場合は、制限なく繰り返す
' rep_time 実行間隔時間
' proc_name 実行するプロシジャー名
' F_Exetm 初回実行時間 省略すると、現在の時刻+実行間隔時間
On Error Resume Next
If on_off = True Then
reptm = rep_time
If limit_cnt <> -1 Then
lmcnt = limit_cnt
ccnt = 0
End If
If IsMissing(F_Exetm) Then
exetm = Now() + reptm
Else
exetm = F_Exetm
End If
prcnm = proc_name
End If
Application.OnTime EarliestTime:=exetm, Procedure:="mc_exec", Schedule:=on_off
On Error GoTo 0
End Sub
'===========================================================
Sub mc_exec()
'スケジュール設定されたプロシジャーを実行する
Dim wk As Variant
wk = Application.Run(prcnm)
ccnt = ccnt + 1
If lmcnt = 0 Or ccnt < lmcnt Then
Call mc_schedule(True, -1, reptm, prcnm)
End If
End Sub
最後に別の標準モジュール(Module3)に繰り返し処理スタートプログラムと
途中終了プログラム
'==============================================================
Sub repeat_proc()
Call mc_schedule(True, 1440, TimeValue("00:01:00"), "セルK1_T1を行下げしてセルA1_J1を代入する")
End Sub
'=================================================================
Sub subproc()
'解除
Call mc_schedule(False)
End Sub
以上です。これでrepeat_proc を実行してください。
1分毎に「セルK1_T1を行下げしてセルA1_J1を代入する」を実行します。
繰り返し回数の1440は、1440回=60分×24h です。
又、途中で繰り返しを終わらせる場合は、subprocを実行してください。
|
|