Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


16626 / 76733 ←次へ | 前へ→

【65571】Re:一定時間おきの書き込み
発言  ichinose  - 10/6/10(木) 6:45 -

引用なし
パスワード
   ▼青木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を実行してください。

2 hits

【65569】一定時間おきの書き込み 青木w 10/6/10(木) 5:56 質問
【65571】Re:一定時間おきの書き込み ichinose 10/6/10(木) 6:45 発言
【65572】ありがとうございます。恐縮ですが… 青木w 10/6/10(木) 8:19 お礼
【65573】Re:ありがとうございます。恐縮ですが… ichinose 10/6/10(木) 8:58 発言
【65574】Re:ありがとうございます。 青木w 10/6/10(木) 9:08 お礼

16626 / 76733 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free