- ベストアンサー
Excel ページ指定連続印刷
お世話になります。 Excel2003にて sheet1(出力表) A B C D E F 1行目は項目 1 ○○○○○ 1←表示指定頁数入力 2 ***** 3 ***** |印刷|←ボタン A2:E2以降(実際は21行)に、 sheet2(データ)に表の項目順に入力し、並べ替えをしたデータを (A2であれば…データ!B3に必要な項目があるとして…)=IF(OR($F$1=0,$F$1=""),"",IF(OFFSET(データ!B3,($F$1-1)*21,0,1,1)="","",OFFSET(データ!B3,($F$1-1)*21,0,1,1))) で、F1に必要頁を入力し反映させ、表を印刷していましたが、頁数が多くなると手間がかかるので、指定頁までを印刷するように Private Sub CommandButton1_Click() Dim msg, style, title, help, ctxt, response, mystring msg = "表を出力します。" style = vbOKCancel + vbinfomation + vbDefaultButton1 title = "Print Out" help= "demo.hlp" ctxt = 1000 response = MsgBox(msg, style, title, help, ctxt) If response = vbOK Then mystring = "ok" Worksheets("出力表").Activate Dim page As Integer Dim pageend As Integer pageend = Range("F1") For page = 1 To pageend Cells(1, 6) = page Sheet1.PrintOut Next page Else mystring = "cansel" MsgBox "cancel...bye" End If End Sub(見づらいですが行詰めました…) これは、1頁目からの印刷なので、例)3頁目から5頁目を印刷という機能も欲しいな、と思い…F3=開始頁 G3=終了頁を入力…「印刷」…ここまで考えましたがまだあまり応用が利かないため、先に進みません…。 ☆この状態でのページ指定印刷の方法 ☆もっと簡単な方法があるよ!など アドバイスをいただけたら助かります。説明不明瞭で申し訳ありません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。コーディングスタイルは人それぞれなので 参考になるかどうかわかりませんが、 Dim mystring As String Dim style As Long, ctxt As Long, response As Long Dim s_page As Long, e_page As Long, i As Long Const msg As String = "表を出力します。" Const title As String = "Print Out" Const help As String = "demo.hlp" ctxt = 1000 style = vbOKCancel + vbinfomation + vbDefaultButton1 response = MsgBox(msg, style, title, help, ctxt) If response = vbOK Then With Worksheets("出力表") s_page = .Range("F3").Value e_page = .Range("G3").Value For i = s_page To e_page .Range("F1").Value = i .PrintOut Next i End With mystring = "ok" Else mystring = "cancel...bye" End If MsgBox mystring 概ねこんな感じになるかと思います。 (特にエラー処理していません)
その他の回答 (1)
- taka_s777
- ベストアンサー率57% (8/14)
例のような3頁目から5頁目を印刷というのは、For文を使わなくても、 Sheet1.PrintOut From:=開始頁, To:=終了頁 とすればできますよ。もし部数も指定する必要があるならば、 Sheet1.PrintOut From:=開始頁, To:=終了頁, Copies:=部数 です。 ※開始頁、終了頁、部数それぞれ変数とします。
お礼
回答ありがとうございました!参考にさせていただきます。
お礼
思い通りのものができました!ありがとうございました!!!これからまた少しずつ勉強していきたいと思います。