プロが教えるわが家の防犯対策術!

毎日、B4:F4をB5:F5にコピー、翌日はB5:F5をB6:F6にコピーをVBAで組立したいんですけどアドバイスお願い致します。

質問者からの補足コメント

  • そうなんです!

    No.1の回答に寄せられた補足コメントです。 補足日時:2020/01/19 18:23

A 回答 (3件)

基本的に「Range("B4:F4").Insert Shift:=xlDown」を1日1回実行すれば良いと思いますが、これを自動

でやりたいという事でしょうか?
この回答への補足あり
    • good
    • 1

私の解釈ですけど。



A列に日付が入っててB~F列に数式があり、A列の日付が『今日』を指し示す際にその行のB~F列が空白であれば前日の該当する行からコピペしてくる。

って思いましたけど、何分推測でしかないのでよそに行ってました。
    • good
    • 0

それでは以下のような物はいかがでしょうか?


※ どこかに前回の起動日時を記録しないといけないので「対応日」という隠しシートを作っています。
※ 起動時に前回の起動日との差だけ下にずらしています。
※ 実験したければ「対応日」シートのA1セルの日付を変えて保存して閉じて下さい。

☆ ThisWorkbook へ

Private Sub Workbook_Open()
 Call 起動処理
End Sub

☆ 標準モジュールの Module1 などへ

Sub 起動処理()
 Const 対象シート As String = "Sheet1" '← 環境に合わせて下さい
 Const シート名 As String = "対応日"
 Dim シート有 As Boolean
 Dim シート As Object
 For Each シート In Sheets
  If シート.Name = シート名 Then
   シート有 = True
   Exit For
  End If
 Next
 If シート有 = False Then
  Worksheets.Add after:=Worksheets(Worksheets.Count)
  ActiveSheet.Name = シート名
 End If
 Sheets(シート名).Visible = False
 If IsDate(Sheets(シート名).Range("A1").Value) = False Then
  Sheets(シート名).Range("A1").Value = Date
 End If
 Sheets(対象シート).Select
 Do While Sheets(シート名).Range("A1").Value < Date
  Range("B4:F4").Insert Shift:=xlDown
  Sheets(シート名).Range("A1").Value = Sheets(シート名).Range("A1").Value + 1
 Loop
End Sub
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!