• ベストアンサー

excelのマクロで印刷

まず印刷のシートがいくつであるか入力するメッセージボックスが出てきて、その後それらのシート内の一部分を削除する場合があるので削除するかどうかのメッセージボックスが出てきてから印刷するものを作りたいのですがどうすればいいですか?宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

1.Altキー+F11キーを押します。これでVBE(VisyalBasicEditor)が立ち上がります。 2.VBE画面の左側のプロジェクトウィンドウ内に VBAProject(開いているブック名) があります。その左が+になっていたらクリックして-にし展開します。 3.そこに標準モジュールがありますか?なければ、挿入⇒標準モジュール 4.標準モジュールを開き、右側の白い大きな部分に下記のコードをコピペしてみてください。 Sub test() p = Application.InputBox("何枚目のシートを印刷しますか?", "Input", Type:=1) If p = "False" Or p = 0 Then Exit Sub Worksheets(p).Select myYN = MsgBox("修正しますか?", vbYesNo + vbQuestion, "確認") If myYN = vbYes Then Exit Sub ActiveWindow.SelectedSheets.PrintOut End Sub 5.Alt+F11でワークシートに戻ります。 6.メニューのツール⇒マクロ⇒マクロ で出てきたところからマクロ名testを選び実行します。 ご要望の動きをすると思います。

hetox2
質問者

補足

参考にさせていただき下記のようにつくりましたがSheets("Z").Selectの所でつまづいてしまいました。 どうかえればいいですか? X = InputBox("何件ですか? (1 ~ 20)", "件数") Z = 1 If X <= 20 Then Y = MsgBox("削除しますか?", vbYesNo + vbQuestion) Do Until Z > X Sheets("Z").Select If Y = vbYes Then Range("O4:S4").Select Selection.ClearContents Range("J10:M10").Select Selection.ClearContents ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Else ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True End If Z = Z + 1 Loop End If End Sub

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

> Range("O4:S4").Select Selection.ClearContents は内容を消すだけで、空白部が残り、削除とは違うと思う。そのところに目が行きましたが、それはよいのですか。目的どおりですか。 (1)「シートがいくつであるか入力する」とVBAの「何件ですか」は 同じようには見えない (2)部分を削除する場合があるので (3)印刷 (4)その他 のうち質問はどれが重点ですか?

  • masa_019
  • ベストアンサー率61% (121/197)
回答No.3

>Sheets("Z").Selectの所でつまづいてしまいました。 に対するヒントだけ。 Sheets("Z")だとZは文字列 Sheets(Z)だとZは変数です。 Sub test() Dim Z Z = "ゼット" Debug.Print Z Debug.Print "Z" End Sub

hetox2
質問者

お礼

ありがとうございました。解決しました。

  • kadakun1
  • ベストアンサー率25% (1507/5848)
回答No.1

自分の体験談から・・・ まず自分で本などを購入して勉強した方がいいです。 そして、自分でつくったマクロでうまくいかない時は、またココで相談して下さい。もちろんマクロを書いて・・・ マクロ自体を理解しないうちに、全部教えてもらうのは無理がありますし、カスタマイズも出来なくなります。 後で、自分が困りますよ。

関連するQ&A

専門家に質問してみよう