[[20170401132342]] 『平日のみの日付が入った報告書1か月分の印刷』(さくら) ページの最後に飛ぶ

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

 

『平日のみの日付が入った報告書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


半平太さん 
返事をいただきましてありがとうございます。
印刷した後、祝祭日は自力でそれだけ抜いて破棄しようと思っていますが、もし可能でしたら
例えば...祝祭日の一覧は、I1からI20くらいまでに設定すれば大丈夫でしょうか?

(さくら) 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.