0
ユーザーが記入したフォームでコマンドボタンをクリックすると、次のコードが実行されます。フォームには5つのページがありますが、10のうち9回は1番目と5番目のページだけが情報を持っています。ページ2-4は追加項目ですが、データがない場合は印刷したくありません。現在、コードを使用して印刷すると、5ページすべてが印刷されます。ExcelでVBAを使用して値を持ち、空白のページを印刷する
私は、適切な印刷領域を印刷するためのコードのヘルプを探しています。私は、コードの最終行が問題であるかどうか、または印刷領域が計算される方法であるかどうかはわかりません。セットアップの範囲で範囲変数を設定する必要がありますか、または印刷コマンドの範囲全体を使用して印刷領域を印刷できますか?
ご協力いただきありがとうございます。ここに私が走ろうとしているサブがある。
Private Sub PrintEstimate1_Click()
' Prints the estimate upon clicking once
Dim ws As Worksheet
Set ws = ActiveSheet
Dim page1 As Range
Dim page2 As Range
Dim page3 As Range
Dim page4 As Range
Dim page5 As Range
Set page1 = ws.Range("A2:I58")
Set page2 = ws.Range("A59:I116")
Set page3 = ws.Range("A117:I174")
Set page4 = ws.Range("A175:I232")
Set page5 = ws.Range("A233:I289")
Dim setup As PageSetup
Set setup = ws.PageSetup
If ws.Range("A63").Value = vbNullString Then
setup.PrintArea = Union(page1, page5).Address
ElseIf ws.Range("A121").Value = vbNullString Then
setup.PrintArea = Union(page1, page2, page5).Address
ElseIf ws.Range("A179").Value = vbNullString Then
setup.PrintArea = Union(page1, page2, page3, page5).Address
Else
setup.PrintArea = Union(page1, page2, page3, page4, page5).Address
End If
msg = "Would you like to send to default printer?"
msg = msg & vbNewLine
config = vbYesNoCancel + vbQuestion + vbDefaultButton1
Title = "Printer Selection"
ans = MsgBox(msg, config, Title)
' Dialog Box to decide whether to quick print or make changes to printer setup.
If ans = vbYes Then Worksheets("PE Form").Range("A1:I288").PrintOut Copies:=1, Collate:=True
'I am not sure if it is this line above that is giving me the problem or not.
If ans = vbNo Then Application.Dialogs(xlDialogPrint).Show
If ans = vbCancel Then
End If
End Sub
A63、A121、A179は実際には空ですか?私はすべての5ページが印刷される場合、それらのテストが失敗していると仮定しています。それらのセルには1つのスペースが含まれていますか?あなたがステップスルーした場合、 'ElseIf'命令の' If'を実行するか、 'Else'だけを実行しますか? – MoondogsMaDawg
はい、セルが空であることを確認しました。私はそれを踏んだとき、最初のIFをA63が空白であると捉え、Page1とPage5に印刷領域を設定しましたが、印刷すると5ページすべてが印刷されました。 – Decoy26
'もしans = vbYes then Worksheets(" PE Form ")。Range(" A1:I288 ")。PrintOut'ここで範囲をハードコードしました。私はあなたの印刷領域の設定をオーバーライドすると思います。 if ans = vbYes Then Workheets( "PE Form")。PrintOut'(未テスト)。 – MoondogsMaDawg