プロが教える店舗&オフィスのセキュリティ対策術

エクセルで日付連続印刷したく下記のようなものが、別の質問の回答であり、
試してみましたが、印刷できません。
印刷できるようにするには、どのようにしたら良いのでしょうか?

Sub Test()
Dim myPrompt_s As String, myTitle_s As String
Dim myPrompt_e As String, myTitle_e As String
Dim startDay As Date, endDay As Date, I As Integer
On Error GoTo ExitMe
myPrompt_s = "何月何日から?"
myTitle_s = "印刷開始日付"
myPrompt_e = "何月何日まで?"
myTitle_e = "印刷終了日付"
startDay = Format(InputBox(myPrompt_s, myTitle_s), "m/d(aaa)") '開始
endDay = Format(InputBox(myPrompt_e, myTitle_e), "m/d(aaa)") '終了
For I = 0 To endDay - startDay
Range("b3").Value = Format(startDay + I, "m/d(aaa)")
ActiveSheets.PrintOut
Next I
ExitMe:
End Sub

A 回答 (5件)

先の回答で、「 On Error GoTo ExitMe の行をコメントにして実行すれば、エラー箇所が分かる」と書きましたが、やってみましたか?



やってみると ActiveSheets.PrintOut の行でエラーが発生しているのが分かると思います。
ActiveSheets は、”s”なしで、ActiveSheet が正しいです。
    • good
    • 0
この回答へのお礼

ありがとうございます。
On Error GoTo ExitMe の行をコメントにして実行すれば、エラー箇所が分かるの意味がわかりませんでした。
ド素人ですみません。
印刷できました。

お礼日時:2016/02/06 20:29

NO4です。

もう一つの方法を紹介するのを忘れていました
もうひとつのInputBox Application.InputBox を使います。
Application.InputBox(Prompt:=myPrompt_s, Type:=1)
にすると日付として認識できる、或いは数値のみ入力できます。
間違って数字を入力されたときは挙動不審になります。
詳しくは
http://officetanaka.net/excel/vba/tips/tips37.htm
この辺りを!!
    • good
    • 0
この回答へのお礼

ありがとうございます。
参考にさせて頂きます。

お礼日時:2016/02/06 20:30

蛇足ですが、間違って日付に認識できない文字など入力した場合処理も


必要ですね。
http://www.moug.net/tech/exvba/0110019.html
の辺りを参考にして下さい。

もっと簡単な入力方法で
カレンダーのコントロールを使う方法があります。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v …
この辺りが参考になるでしょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。
参考にさせて頂きます。

お礼日時:2016/02/06 20:29

>startDay = Format(DateValue(InputBox(myPrompt_s, myTitle_s)), "m/d(aaa)") '開始



上記の命令に誤りがあります。(endDay への代入も同様です)
Format関数の戻りは文字型です。それを日付型のstartDay に代入しようとしています。
(On Error の行をコメントにして実行すれば、エラーの発生個所が分かりますよ)

正しくは、こんな感じで。
startDay = DateValue(InputBox(myPrompt_s, myTitle_s)) '開始
    • good
    • 0
この回答へのお礼

Sub Test()
Dim myPrompt_s As String, myTitle_s As String
Dim myPrompt_e As String, myTitle_e As String
Dim startDay As Date, endDay As Date, I As Integer
On Error GoTo ExitMe
myPrompt_s = "何月何日から?"
myTitle_s = "印刷開始日付"
myPrompt_e = "何月何日まで?"
myTitle_e = "印刷終了日付"
startDay = DateValue(InputBox(myPrompt_s, myTitle_s)) '開始
endDay = DateValue(InputBox(myPrompt_e, myTitle_e)) '終了
For I = 0 To endDay - startDay
Range("b3").Value = Format(startDay + I, "m/d(aaa)")
ActiveSheets.PrintOut
Next I
ExitMe:
End Sub

こんな感じに修正しましたが、無理でした。
すみません。再度教えてください。

お礼日時:2016/02/04 11:57

「印刷できません」というのが、どのような状態なのか分からないが…


(白紙だけプリンタから出てくるのか、プリンタが反応しないのか
 ”何月何日から?”の表示すらされない…など)

・マクロを有効にする。
・B3セルを印刷範囲に含める。
・印刷可能なプリンタを指定する。
・指定したプリンタを印刷可能な状態にする。(プリンタとの接続、印刷用紙・インクの補給、電源ON、プリンタをオンラインにすることを含める)

どれか、または全部抜けているのではないかと思う。

あるいはMicrosoft Excelではなく互換ソフトを使用しているのではないだろうか。
    • good
    • 0
この回答へのお礼

ありがとうございます。
白紙でも印刷されず、プリンターまで届きません。
Microsoft Excelを使用しています。

お礼日時:2016/02/04 11:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています