[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『平日だけ印刷する』(アルバ)
はじめまして。教えてください。
任意の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)
的確なご指導感謝です。
で、お教えいただきました
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)
で、なんとかご紹介をいただいた↓ 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)
本当に親切に教えていただきまして、大変助かりました。 そうですね。入門サイトで勉強してきます。 ただ、だれでも最初はあるということをおわかりくださいね。 あと、なんだか「チクリ屋さん」みたいな方がWEB上にはいらっしゃるんですね。 わからないから、急をせくので尋ねるのであって自分の才能をひけらかす ようなことは今後もしたくないですね。
気になったので一言。 マルチポストはあちらでもこちらでも 禁止はされてませんが、推奨されているわけでもありません。 マルチポストするのなら、各サイトで他でも聞いていることを 一言断りを入れるべきです。 >自分の才能をひけらかすようなことは今後もしたくないですね。 これはどういう意味でしょうか? 私は一旦回答したことは削除しませんが、回答したことを 後悔してます。 (MARBIN)
あちらの質問文を削除したようですね。 余りにも無責任。 回答者へも失礼ですね。 こういう方は二度とネットで質問してほしくないものです。 とはいってもHNなどを変えても、質問文の書き方から 分かりますから誰もレスしないと思うけどね。 自分で自分の首を絞めただけ。 (マルチネス)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.