- ベストアンサー
excelのマクロで印刷
まず印刷のシートがいくつであるか入力するメッセージボックスが出てきて、その後それらのシート内の一部分を削除する場合があるので削除するかどうかのメッセージボックスが出てきてから印刷するものを作りたいのですがどうすればいいですか?宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
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を選び実行します。 ご要望の動きをすると思います。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
> Range("O4:S4").Select Selection.ClearContents は内容を消すだけで、空白部が残り、削除とは違うと思う。そのところに目が行きましたが、それはよいのですか。目的どおりですか。 (1)「シートがいくつであるか入力する」とVBAの「何件ですか」は 同じようには見えない (2)部分を削除する場合があるので (3)印刷 (4)その他 のうち質問はどれが重点ですか?
- masa_019
- ベストアンサー率61% (121/197)
>Sheets("Z").Selectの所でつまづいてしまいました。 に対するヒントだけ。 Sheets("Z")だとZは文字列 Sheets(Z)だとZは変数です。 Sub test() Dim Z Z = "ゼット" Debug.Print Z Debug.Print "Z" End Sub
お礼
ありがとうございました。解決しました。
- kadakun1
- ベストアンサー率25% (1507/5848)
自分の体験談から・・・ まず自分で本などを購入して勉強した方がいいです。 そして、自分でつくったマクロでうまくいかない時は、またココで相談して下さい。もちろんマクロを書いて・・・ マクロ自体を理解しないうちに、全部教えてもらうのは無理がありますし、カスタマイズも出来なくなります。 後で、自分が困りますよ。
補足
参考にさせていただき下記のようにつくりましたが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