[[20071008095526]] 『平日だけ印刷する』(アルバ) ページの最後に飛ぶ

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

 

『平日だけ印刷する』(アルバ)

はじめまして。教えてください。

任意のSheetで「A1」のセルに西暦で「年(西暦)」を

「B1」のセルに
「月」を入力してマクロを実行すると、

その月の「1日から末日」まで一枚、一枚、

日付を「C4」のセルに入力しながら印刷してくれるというマクロを

以前教えていただきました。

それが↓です。

Sub test()

Dim i As Integer

Dim myDate As String

myDate = Range("A1").Value & "/" & Range("B1").Value & "/" & 1

For i = 1 To Day(DateAdd("m", 1, myDate) - 1)

    Range("C4").Value = i
    ActiveSheet.PrintOut
Next i

End Sub

で、このマクロを利用して
「平日だけ(土・日を印刷しない)」を

入力・印刷できるように
したいのですが、どうすればいいかわかりません。

いい方法があれば教えてください。m(__)m

よろしくお願いいたします。


 Weekday(DateAdd("d", i - 1, myDate))
 で日付の曜日(番号)を取得できます。

 この曜日で判定してはいかがでしょう?
 ※祝日、休日はどうするのでしょう?
 (MARBIN)

MARBINさん、早速の回答ありがとうございます。
 的確なご指導感謝です。
 で、お教えいただきました
  Weekday(DateAdd("d", i - 1, myDate))を
 どの部分にもってくればいいのか・・・
 ただ、単に
  For i = 1 To のあとに Day(Weekday(DateAdd("d", i - 1, myDate))
 のように、もってくればいいのか・・・・
 よろしくお願いいたします。m(__)m
 なにぶんにも、VBAは駆け出しなので・・・(T_T)
 
 また、もちろんご指摘どおり
 「祝日・休日」についても抜けるようでしたら印刷しないようにしたいのですが・・・・

 ご面倒をおかけいたしますが、ほんとうに素人なものでよろしくお願いいたします。m(__)m


 日曜の番号:1
 土曜の番号:7

 です。
 If
 で曜日番号が1または7だったら何もしない、
 それ以外だったらPrintOut
 とします。

 If文の中に
 >Weekday(DateAdd("d", i - 1, myDate))
 を組み入れて条件分岐します。

 If文の使い方は↓が参考になると思います。

https://www.excel.studio-kazu.jp/lib/e1pw/e1pw.html

 条件が二つ(曜日番号が1と7)あるので、Orと組み合わせる
 ことになります。
 (MARBIN)

 あと、休祝日を除外するには、休祝日のリスト
 ができていることが前提になります。
 特定の日付が休祝日リストにあるか否かの
 判定は過去ログにあると思います。
 (MARBIN)

 ↓が参考になると思います。

[[20050118111317]]『土日祝日以外の当月末』(なな)

 (MARBIN)

MARBINさん。本当にきめ細かくありがとうございます。m(__)m
 で、なんとかご紹介をいただいた↓
 https://www.excel.studio-kazu.jp/lib/e1pw/e1pw.htmlのページを
 参考に考えてみたんですが・・・・・

 Sub test()
   Dim i As Integer
   Dim myDate As String

    myDate = Range("A1").Value & "/" & Range("B1").Value & "/" & 1

    For i = 1 To Day(DateAdd("m", 1, myDate) - 1)

       if 'たぶんこの辺にはいるのかな?

       Range("C4").Value = i
       ActiveSheet.PrintOut
    Next i

  End Sub

  やっぱり教えていただいた、
    Weekday(DateAdd("d", i - 1, myDate))を
    どこにどのように入れたらいいかわかりません。
     具体的にいれていただけないでしょうか?
     理解力がなくて、申しわけありませんm(__)m
     よろしくおねがいいたします。


 まだ祝日には対応していません。
 変数の型を変えました。

 Sub test()
   Dim i As Integer
   Dim myDateA As Date
   Dim myDateB As Date
   Dim myDateC As Date
   Dim Nisu As Integer

    '開始日の設定
    myDateA = DateValue(Range("A1").Value & "/" & Range("B1").Value & "/" & 1)
    '終了日の設定(実際は終了日+1日)
    myDateB = DateAdd("m", 1, myDateA)
    '日数の取得/終了日-開始日
    Nisu = (myDateB - myDateA) * 1

    For i = 1 To Nisu
    'myDateAに1日づつ足していく
     myDateC = DateAdd("d", i - 1, myDateA)
     '曜日番号が1でなく、かつ7でないときは
     If Weekday(myDateC) <> 1 And Weekday(myDateC) <> 7 Then
       ActiveSheet.Range("C4").Value = i
       ActiveSheet.PrintOut
     End If
    Next i
 End Sub
 (MARBIN)

 回答者への参考です。

 平日のみ印刷
http://officetanaka.com/patio/patio.cgi?mode=view&no=254
 (マルチネス)

 リンク先みました。
 残念ながら、あちらのビリーさんの コードが理解できない
 のなら、私の コードも理解できるとは思えません。
 分からないところがあれば、VBAヘルプや ネット検索で
 理解するように努めましょう。
 ここのようなQ&Aサイトでは、理解できる出来ないではなく、
 理解しようとする努力の跡が見えるか見えないかで回答者
 の態度は変わってきます。理解しようとしていない、と判断
 されたら回答者は冷たいです。
 VBA入門サイトでの勉強、入門テキストでの勉強をお勧めします。
 (MARBIN)

MARBINさんありがとうございました。

 本当に親切に教えていただきまして、大変助かりました。
 そうですね。入門サイトで勉強してきます。
 ただ、だれでも最初はあるということをおわかりくださいね。
 
 あと、なんだか「チクリ屋さん」みたいな方がWEB上にはいらっしゃるんですね。
 わからないから、急をせくので尋ねるのであって自分の才能をひけらかす
 ようなことは今後もしたくないですね。


 気になったので一言。
 マルチポストはあちらでもこちらでも
 禁止はされてませんが、推奨されているわけでもありません。
 マルチポストするのなら、各サイトで他でも聞いていることを
 一言断りを入れるべきです。
 >自分の才能をひけらかすようなことは今後もしたくないですね。
 これはどういう意味でしょうか?
 私は一旦回答したことは削除しませんが、回答したことを
 後悔してます。
 (MARBIN) 

 あちらの質問文を削除したようですね。
 余りにも無責任。
 回答者へも失礼ですね。
 こういう方は二度とネットで質問してほしくないものです。
 とはいってもHNなどを変えても、質問文の書き方から
 分かりますから誰もレスしないと思うけどね。
 自分で自分の首を絞めただけ。
 (マルチネス)

コメント返信:

[ 一覧(最新更新順) ]


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