Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8783 / 13644 ツリー ←次へ | 前へ→

【14057】日付を設定して印刷する pig 04/5/19(水) 14:19 質問[未読]
【14058】Re:日付を設定して印刷する IROC 04/5/19(水) 14:41 回答[未読]
【14059】Re:日付を設定して印刷する Asaki 04/5/19(水) 14:46 回答[未読]
【14060】Re:日付を設定して印刷する BOTTA 04/5/19(水) 15:14 回答[未読]
【31186】Re:日付を設定して印刷する AO 05/11/14(月) 12:41 質問[未読]
【31206】Re:日付を設定して印刷する こたつねこ 05/11/14(月) 16:15 回答[未読]
【31207】Re:日付を設定して印刷する ichinose 05/11/14(月) 16:19 発言[未読]
【31210】Re:日付を設定して印刷する AO 05/11/14(月) 16:45 お礼[未読]
【31208】Re:日付を設定して印刷する Jaka 05/11/14(月) 16:20 回答[未読]
【14063】Re:日付を設定して印刷する pig 04/5/19(水) 17:23 質問[未読]
【14067】Re:日付を設定して印刷する BOTTA 04/5/19(水) 18:20 回答[未読]
【14068】Re:日付を設定して印刷する pig 04/5/19(水) 19:37 質問[未読]
【14069】Re:日付を設定して印刷する pig 04/5/19(水) 21:15 お礼[未読]

【14057】日付を設定して印刷する
質問  pig  - 04/5/19(水) 14:19 -

引用なし
パスワード
   みなさん、こんにちは。次のコードについて質問があります。
これは、あるデータシートがあります。セルN3〜33まで日付が入力されており
(例えば、5月1日(土)〜5月31日(月))、この最初の日付を、セルB2へ貼り付けて印刷し、次に2番目の日付を印刷する…というような、作業内容なのですが、これを
セルN3に月の最初の日付を入力するだけで、全日分印刷できるようなコードを考えていますが、なかなかできません。以下のコードにどのように加えれば良いのか、教えていただけますでしょうか?


Sub test()

  Dim RowNo As Long
  Dim ColNo As Long
  
  Application.ScreenUpdating = False
  
  With Worksheets("Sheet1")
    RowNo = 3 
    ColNo = 3 
  
    For RowNo = 3 To 33 
      If Cells(RowNo, ColNo) = "" Then 
        Exit For
      End If
      
      Cells(RowNo, ColNo).Copy
      Range("B2").PasteSpecial
      CutCopyMode = False
      .PrintOut Copies:=1, Collate:=True
      
    Next
   
  End With

Application.ScreenUpdating = True

End Sub

【14058】Re:日付を設定して印刷する
回答  IROC  - 04/5/19(水) 14:41 -

引用なし
パスワード
   セルの日付は、 日付型ですか?文字列ですか? 

【14059】Re:日付を設定して印刷する
回答  Asaki  - 04/5/19(水) 14:46 -

引用なし
パスワード
   こんにちは。

試してみましたが、普通に動いてそうですよ?
>Cells(RowNo, ColNo).Copy
>Range("B2").PasteSpecial
は、日付をコピーしているわけではなさそうですが。。。

上手くいかない、というのは、どうなって欲しいのに、どうなる、のでしょうか?

【14060】Re:日付を設定して印刷する
回答  BOTTA  - 04/5/19(水) 15:14 -

引用なし
パスワード
   pigさん、こんにちは。

こんな感じでいかが?

Sub aaa()
Dim fstDate As Date, lstDate As Date, tmpDate As Date
  fstDate = Worksheets("Sheet1").Range("N3").Value
  lstDate = DateValue(Year(fstDate) & "/" & Month(fstDate) + 1 & "/1") - 1
  For tmpDate = fstDate To lstDate
    With Worksheets("Sheet1")
      .Range("B2").Value = tmpDate
      .PrintOut Copies:=1, Collate:=True
    End With
  Next
End Sub

【14063】Re:日付を設定して印刷する
質問  pig  - 04/5/19(水) 17:23 -

引用なし
パスワード
   ▼Asakiさん、IROCさん、BOTTAさん、こんにちは。

もうしわけありません。説明が足りなかったようです。
セル3に月の初日を文字列で入力するだけで、全ての日にち分が
印刷されるようにしたかったのです。BOTTAさんの回答内容でやってみたら
うまくできました。わがままついでに、もうひとつお願いがあります。
例えば、4月1日(月)と入力した場合、一番最後に、5月1日分が
入ります。これを入らないようにするにはどうしたら良いのでしょうか?


>みなさん、こんにちは。次のコードについて質問があります。
>これは、あるデータシートがあります。セルN3〜33まで日付が入力されており
>(例えば、5月1日(土)〜5月31日(月))、この最初の日付を、セルB2へ貼り付けて印刷し、次に2番目の日付を印刷する…というような、作業内容なのですが、これを
>セルN3に月の最初の日付を入力するだけで、全日分印刷できるようなコードを考えていますが、なかなかできません。以下のコードにどのように加えれば良いのか、教えていただけますでしょうか?
>
>
>Sub test()
>
>  Dim RowNo As Long
>  Dim ColNo As Long
>  
>  Application.ScreenUpdating = False
>  
>  With Worksheets("Sheet1")
>    RowNo = 3 
>    ColNo = 3 
>  
>    For RowNo = 3 To 33 
>      If Cells(RowNo, ColNo) = "" Then 
>        Exit For
>      End If
>      
>      Cells(RowNo, ColNo).Copy
>      Range("B2").PasteSpecial
>      CutCopyMode = False
>      .PrintOut Copies:=1, Collate:=True
>      
>    Next
>   
>  End With
>
>Application.ScreenUpdating = True
>
>End Sub

【14067】Re:日付を設定して印刷する
回答  BOTTA  - 04/5/19(水) 18:20 -

引用なし
パスワード
   pigさん、こんばんは。
>  lstDate = DateValue(Year(fstDate) & "/" & Month(fstDate) + 1 & "/1") - 1
上の計算で次月の一日の1日前、つまり当月の末日を算出していますので、
最後は末日になるはずです。

また、
>例えば、4月1日(月)と入力した場合、
正確には半角で"4/1"などと日付値(シリアル値)を入力しないと、型違いのエラーが
発生します。

>4月1日(月)
とは、いつのこと???

【14068】Re:日付を設定して印刷する
質問  pig  - 04/5/19(水) 19:37 -

引用なし
パスワード
   ▼BOTTA さん,すみません、入力間違いでした。先程の、質問はなしにしてください。


それで、あと一つご教授願います。

曜日を入れる場合、Weekday関数を使うと思うのですが、Weekday(tmpdate)では
まずいのでしょうか?

【14069】Re:日付を設定して印刷する
お礼  pig  - 04/5/19(水) 21:15 -

引用なし
パスワード
   ▼BOTTA さん、こんばんは。先程の、質問わかりました。以下のコードを入力しました。
 わけのわからない質問ばかりすみませんでした。ありがとうございました。

  .NumberFormatLocal = "ggge""年""m""月""d""日""(aaa)"

【31186】Re:日付を設定して印刷する
質問  AO  - 05/11/14(月) 12:41 -

引用なし
パスワード
   ▼BOTTA さん:
>pigさん、こんにちは。
>
>こんな感じでいかが?
>
>Sub aaa()
>Dim fstDate As Date, lstDate As Date, tmpDate As Date
>  fstDate = Worksheets("Sheet1").Range("N3").Value
>  lstDate = DateValue(Year(fstDate) & "/" & Month(fstDate) + 1 & "/1") - 1
>  For tmpDate = fstDate To lstDate
>    With Worksheets("Sheet1")
>      .Range("B2").Value = tmpDate
>      .PrintOut Copies:=1, Collate:=True
>    End With
>  Next
>End Sub
このマクロを利用して日付を印刷したところ11月まではちゃんと印刷できますが 12/1では印刷できません なぜでしょうか 宜しくお願いします

【31206】Re:日付を設定して印刷する
回答  こたつねこ  - 05/11/14(月) 16:15 -

引用なし
パスワード
   AOさん、こんにちは

>このマクロを利用して日付を印刷したところ11月まではちゃんと印刷できますが
>12/1では印刷できません なぜでしょうか 宜しくお願いします

DateValue関数は日付形式の文字列をシリアル値として取得します。
なので
>>  fstDate = Worksheets("Sheet1").Range("N3").Value
が2005/12/1の場合
Year(fstDate) & "/" & Month(fstDate) + 1 & "/1"
の文字列は"2005/13/1"となりますよね?
こんな日付はありえませんよね?
なのでエラーになります。

【31207】Re:日付を設定して印刷する
発言  ichinose  - 05/11/14(月) 16:19 -

引用なし
パスワード
   ▼こたつねこ さん、AOさん、こんにちは。

>
>>このマクロを利用して日付を印刷したところ11月まではちゃんと印刷できますが
>>12/1では印刷できません なぜでしょうか 宜しくお願いします
>
>DateValue関数は日付形式の文字列をシリアル値として取得します。
>なので
>>>  fstDate = Worksheets("Sheet1").Range("N3").Value
>が2005/12/1の場合
>Year(fstDate) & "/" & Month(fstDate) + 1 & "/1"
>の文字列は"2005/13/1"となりますよね?
>こんな日付はありえませんよね?
>なのでエラーになります。


  lstDate = DateSerial(Year(fstDate), Month(fstDate) + 1, 0)

または、

  lstDate = DateSerial(Year(fstDate), Month(fstDate) + 1, 1)-1

とすれば、OKだと思います。試してみてください。

【31208】Re:日付を設定して印刷する
回答  Jaka  - 05/11/14(月) 16:20 -

引用なし
パスワード
   ▼AO さん:
>このマクロを利用して日付を印刷したところ11月まではちゃんと印刷できますが 12/1では印刷できません なぜでしょうか 宜しくお願いします

???。
何が12/1なのか全く解ってませんが、

  lstDate = DateValue(Year(fstDate) & "/" & Month(fstDate) + 1 & "/1") - 1
   ↓ 変えてみてください。
  lstDate = DateAdd("D", -1, Format$(DateAdd("M", 1, fstDate), "YYYY/MM/01"))

【31210】Re:日付を設定して印刷する
お礼  AO  - 05/11/14(月) 16:45 -

引用なし
パスワード
   ▼ichinose さん:
動作確認し、正常に印刷されていました。
ご丁寧に返事をいただきまして本当にありがとうございます。

8783 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free