Excelマクロに詳しい方ご教授お願いします。A1に2025/12/1と入力すると、A18はA1の6ヶ月後の前日2026/5/31、A25はA1の翌日2025/12/2、A42はA25の6ヶ月後の前日2026/6/1と表示させて、A1から1ヶ月間を自動で印刷は出来ないでしょうか?

Excel

1件の回答

回答を書く

1142334

2026-03-18 21:00

+ フォロー

前回質問(削除されましたが)は忘れて、素直に?考えます。



以下の想定(あるいは想像)です。



1. A1 には「1 日」の日付が入るものとする。

2. 「A1から1ヶ月間を自動で印刷」は、A1 の日付を月末まで 1 日ずつ進めて、都度印刷することと解釈する。

    もしかして A1:A48(の行範囲)が 2 日分なのか?という気もするが。

3. 印刷範囲および A1, A18, A25, A42 の書式設定は適切に設定されているものとする。



A18, A25, A42 は予め式を入力しておいてもよさげではありますが。

しょせん律速段階は実際の印刷処理ですから、ここは普通に当該月の日数分 PrintOut しています。その方がコードはシンプルですし。

Preview:=True はテストのために入れているので、不要なら削除してください。



Sub Sample()

    If Not IsDate(Range(\u0026quot;A1\u0026quot;).Value) Then Exit Sub

    Dim dateStart As Date

    dateStart = Range(\u0026quot;A1\u0026quot;).Value

    If Day(dateStart) \u0026lt;\u0026gt; 1 Then Exit Sub

    Dim d As Long

    For d = 0 To Day(WorksheetFunction.EoMonth(dateStart, 0)) - 1

        Range(\u0026quot;A1\u0026quot;).Value = dateStart + d

        Range(\u0026quot;A18\u0026quot;).Value = DateAdd(\u0026quot;m\u0026quot;, 6, dateStart + d) - 1

        Range(\u0026quot;A25\u0026quot;).Value = Range(\u0026quot;A1\u0026quot;).Value + 1

        Range(\u0026quot;A42\u0026quot;).Value = Range(\u0026quot;A18\u0026quot;).Value + 1

        ActiveSheet.PrintOut Preview:=True

    Next

End Sub

うったえる有益だ(0シェアするブックマークする

Copyright © 2026 AQ188.com All Rights Reserved.

博識 著作権所有