[[20041002225804]] 『1ヶ月分の日報をまとめて印刷』(sinchan) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『1ヶ月分の日報をまとめて印刷』(sinchan)

 お世話になります。マクロ初心者です。
 あるシートのA1に年、B1に月、C1に日付が入った日報があり、そのシートのC1に1を入力して印刷、2を入力して印刷…その月の最後の日を入力して印刷という作業を毎月行っているのですが、これをマクロを使って1日からその月の最後の日(1月は31日、2月は28日といった具合に)まで、まとめて印刷する方法があれば教えてください。
 マクロ記録が多少できるくらいの初心者レベルです。

OS・エクセルのバージョン Windows2000・Excel2000


 こんなんなりましたけど・・・。
A1に2004、B1に10が入っているものとしてC1セルを1から月末日までループさせます。
    ↑年   ↑月
 Sub AutoPrint()
 Dim Mydate As Date
 Dim Mydate1 As Date
 Dim i As Byte
 '日報に入力してある月の1日
 Mydate = Range("A1") & "/" & Range("B1") & "/" & 1
 '日報に入力してある翌月の1日
 Mydate1 = Range("A1") & "/" & Range("B1") + 1 & "/" & 1
 For i = 1 To Mydate1 - Mydate  '当月の日数
     Cells(1, 3) = i
     ActiveSheet.PrintOut
 Next i
 End Sub
 (川野鮎太郎)


 おはようございます。
決して川野鮎太郎さんにケチをつけているわけではありません。(^^;; ヒヤアセ
こんな方法もありかな?と。。。
v(=∩_∩=)v
(SoulMan)
Sub AutoPrint()
Dim i As Integer
    With Worksheets("Sheet1")
        For i = 1 To Day(DateSerial(.Range("A1").Value, .Range("B1").Value + 1, 1) - 1) '当月の日数
            .Range("C1").Value = i
    '        ActiveSheet.PrintOut
        Next i
    End With
End Sub


川野さん、SoulManさん早朝からのご回答ありがとうございました。さっそくお二人の提案を試したいと思います。これから息子の運動会に行きますのでまたあとで… (sinchan)

川野さんので実行したらバッチリ動いたのですが、SoulManさんのは日付が変わるだけで、印刷されませんでした。申し訳ございませんが、川野さんのマクロを採用させていただきます。お二人さんとも本当にありがとうございました。またちょくちょく質問させていただきます。(sinchan)


 あの・・・SoulManさんのが印刷されないのは、
 わざと '(アポストロフィ)を付けてコメントアウトされてるからですよ(^_^A;
 私のは DateSerial が判らなかったのでベタベタな方法です_/ ̄|○ il||li
 知ってたら、以下で済みました(^_^A;
 Sub AutoPrint()
 Dim i As Byte
    For i = 1 To Day(DateSerial(Range("A1"), Range("B1") + 1, 1) - 1)
        Range("C1") = i
    ActiveSheet.PrintOut
    Next i
 End Sub
 (川野鮎太郎)

 また解決済みのに出てきましたよ。
DateSerialを使って、月末が何日かを出したい。
 >DateSerial(Range("A1"), Range("B1") + 1, 1) - 1
結果として間違っては居ない、が
 >DateSerial(Range("A1"), Range("B1") + 1, 1 - 1)
とした方がまとまりがある、かな。
「月に+1、日に−1」した結果の日付を扱いたい、という
マクロ作成者の「意思」がよく汲み取れて読みやすくなる。
(ご近所PG)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.