[[20150305202930]] 『1シートに2日分の日付入力した表の、1カ月分印刷』(マロン) ページの最後に飛ぶ

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

 

『1シートに2日分の日付入力した表の、1カ月分印刷』(マロン)

1つのシートのA1に一日目の日付を入力し
B2に次の日の日付を入力したいと思います。
それを参照して1シートに2日分の表を作成したいと考えています。
そして表の1ヶ月分を印刷したいのです。
ただし日曜日は除外し、詰めて印刷ができないものでしょうか。
よろしくおねがいします。

< 使用 Excel:Excel2007、使用 OS:Windows8 >


 「B2に」は、きっと「B1に」の間違いだろうなぁというほかは全くイメージがわきません。
 2つの日付から、「どんな表をどこに」作成するんですか?
 「2日分の表」というのもイメージがわかないんですが「その(2日分の)表」の中の「1か月分」というのは
 どんな部分なんだろう??

 きちんと、シート上のレイアウトを具体的に説明したほうがいいのでは?

(β) 2015/03/05(木) 20:48


説明が下手で申し訳ありません。
作成したいものは、
小さな表というか毎日の工程のチェックシートのようなものですのです。
ですので、1ページにに2日分並べて作ることができました。
その表に例えば期間の設定を2015/4/1から1ヶ月だとして、
それぞれの表のセル位置B5に20154/1をセル位置AB5に2015/4/2を入力したいのです。

印刷時の2枚目にはセル位置B5に2015/4/3を
セル位置AB5には2015/4/4を印刷したいのです。
3枚目は日曜があるのでセル位置B5には2015/4/6を
セル位置AB5には2015/4/7を印刷したいのです。

この工程で1ヶ月分の表を印刷したいのです。
しかも日曜日は印刷削減のため除外をしたいのです。
本当にわかりづらくて申し訳ありません。

(マロン) 2015/03/05(木) 21:38


 あまり仕様を理解していませんが、詳細は調整してもらうとして、
 こんなことでしょうか。

 Sub Sample()
    Dim sd, pd
    sd = CDate(Format(Date, "YYYY/MM/1")) '// 印刷月の指定は随意に

    pd = sd
    Do While Month(sd) = Month(pd)
        If Weekday(pd) <> vbSunday Then
            If Range("A1").Value = "" Then
                Range("A1").Value = pd
            Else
                Range("B2").Value = pd
                ActiveSheet.PrintPreview '// 印刷は PrintOut
                Range("A1").ClearContents
                Range("B2").ClearContents
            End If
        End If
        pd = pd + 1
    Loop
    If Range("A1").Value <> "" Then
        ActiveSheet.PrintPreview '// 印刷は PrintOut
        Range("A1").ClearContents
        Range("B2").ClearContents
    End If
 End Sub

(Mook) 2015/03/05(木) 21:47


Mookさん素早いコードのご教授ありがとうございます。

初歩的なことですが、お教え下さい。
印刷月の指定をする場合の方法で
セルBA2に印刷月を入力する場合
コードのどこに入れればよいのでしょうか。
お教え下さい。

(マロン) 2015/03/05(木) 22:23


 sd = [BA2]
 などで。
(Mook) 2015/03/06(金) 00:36

Mookさま、教えていただきまして
本当にありがとうございます。

実は作成し完成間近で、表の大きさの変更がありました。
1ページに2日分の表を作成していたものが、
1ページに6日分の表の作成になってしまいました。
教えていただいたプログラムですが、改変がすごく難しいです。
ご迷惑だと思いますが
可能でありましたらもう一度教えていただけないでしょうか。
もちろん日曜日は除外していきたいと思います。

厚かましいお願いですが
よろしくお願いします。
(マロン) 2015/03/06(金) 19:54


日付に対応するセルはN1からN10までの6個です
ここに入力されることにより6個の表の日付がそれぞれ入力されます。
よろしくお願いします。
(マロン) 2015/03/06(金) 20:22

 条件付き書式で、n1からn6に値が入力されていない場合は
 該当する表の範囲のセルの色(罫線とか文字)が白になるようにしておいてください。

 Sub Sample()
    Dim sd, pd
    sd = CDate(Format(Date, "YYYY/MM/1")) '// 印刷月の指定は随意に
    ed = DateAdd("m", 1, sd) - 1
    pd = sd
    Do
        If Weekday(pd) <> vbSunday Then
            n = n + 1
            Select Case n
                Case 1: Range("n1").Value = pd
                Case 2: Range("n2").Value = pd
                Case 3: Range("n3").Value = pd
                Case 4: Range("n4").Value = pd
                Case 5: Range("n5").Value = pd
                Case 6: Range("n6").Value = pd
            End Select
        End If
        If n = 6 Or pd = ed Then
            n = 0
            ActiveSheet.PrintPreview '// 印刷は PrintOut
            Range("n1").ClearContents
            Range("n2").ClearContents
            Range("n3").ClearContents
            Range("n4").ClearContents
            Range("n5").ClearContents
            Range("n6").ClearContents
        End If
        pd = pd + 1
    Loop Until pd > ed

 End Sub

(マナ) 2015/03/07(土) 00:35


マナさん、ありがとうございます。
さっそく試してみました。
少しの仕様の違いで本当にわからなくなり
困っていました。

Mookさん、マナさん、
本当にありがとうございました。
(マロン) 2015/03/07(土) 18:06


コメント返信:

[ 一覧(最新更新順) ]


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