[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『平日のみの日付が入った報告書1か月分の印刷』(さくら)
A1セルに『2017/4』と入力したとします。
そうするとA1セルに4/3から4/28まで 日付の入った報告書を20日分(20枚)月初に印刷したいのです
セルの印刷範囲はA1からH51まで
現在はA1セルに『4』と入力してカレンダーで平日の日数をカウントして印刷しています。
日付は毎日追記しています。
追記もカウントもしなくてもいいやり方がありますか?
1枚目
A1
4/3
2枚目
A1
4/4
このようなイメージです。
< 使用 Excel:Excel2007、使用 OS:Windows7 >
「祝祭日の一覧」が必要と思うのですが、どこかに作ってあるんですか? (もしくは、作る予定なんですか?)
(半平太) 2017/04/01(土) 16:53
(さくら) 2017/04/01(土) 18:01
>例えば...祝祭日の一覧は、I1からI20くらいまでに設定すれば大丈夫でしょうか?
最低、対象月の祝日は必要です。
※ただ、毎月入れるのも逆に面倒なので、通常は、12月まで入れて、 12月に翌年1年分を入れて置く様な運用になるんじゃないかと思います。
I1:I20を選択して、「祝日」と言う名前をつけてください。 (名前定義の仕方は分りますね?)
<使い方> ↓ A1セルに日付(通常は月初)を入力して、下のマクロを実行すれば、
「A1セルの日付」〜「最終平日」までが打ち出されます。
Sub 報告連続印刷()
Dim FstDay As Long Dim StaDay As Long Dim LstDay As Long Dim wkDays Dim NN As Long
StaDay = Range("A1").Value FstDay = [A1-day(A1)+1] 'Evaluateと同等 LstDay = Evaluate("EOMONTH(" & FstDay & ",0)") wkDays = Evaluate("INDEX(WORKDAY(A1-1,ROW(A1:A31),祝日),0)")
For NN = 1 To 31 If StaDay <= wkDays(NN, 1) Then If wkDays(NN, 1) <= LstDay Then Range("A1").Value = wkDays(NN, 1) Range("A1:H51").PrintOut Else Exit For End If End If Next NN End Sub
(半平太) 2017/04/01(土) 19:21
↑ 「月初から印刷する」予定で始めたのですが、 途中で「A1に入れた日付から印刷する」に方針変更した為 ロジックがチグハグになっている箇所があります m(__)m
ただ、現実に問題が生じる訳ではないので、放っておきます。お許しを・・
(半平太) 2017/04/01(土) 19:42
(さくら) 2017/04/01(土) 20:36
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.