
初めまして、こんにちは。
EXCEL VBA初心者で少々困っております。
EXCEL VBAを使い、ボタンに印刷するマクロを登録しました。
ボタンを押すと、指定の帳票が印刷できるようにはできたのですが、
追加の機能を盛り込みたいと思っています。
印刷する際、内容がいくつかあるので、それぞれテンプレートを作成したのですが、
印刷する内容がテンプレートそのままの場合は、メッセージボックスでメッセージを表示し、
印刷処理を中止するようにしたいのです。
テンプレートの内容は数量等が入るので、「○個」などとなっており、
数量などを適宜正しい値に変更した上で印刷処理をしたいため、
テンプレートのままの場合はNGとしたいです。
拙い説明で申し訳ございませんが、ご教示頂けますと助かります。
よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
>印刷する内容がテンプレートそのままの場合は
というのがどういった状態かをパソコンが判断できる基準が必要なのですが
私が良く使う方法ですが
仮にテンプレートのあいているセルに
=COUNTBLANK(B2:C18) といったような関数を準備して
空白のセル(未入力のセル)の数を表示させておきます。
もちろん印刷されないように文字の色を白にするとか
印刷の範囲外のセルを使うとかします。
ボタンを押した際に
Sub ボタン1_Click()
If Range("D5").Value = 0 Then
Sheets(2).PrintPreview
Else
MsgBox "未入力があります"
End If
End Sub
といったようにします。
上記では D5セルにCOUNTBLANK関数で空白のセルの数を表示させておいて
それが 0(全ての項目が入力済み)であれば印刷プレビュー
0以外であれば メッセージボックス を表示
といった分岐です。
VBAで条件をたくさん記載する方法もありますが、
シート上で関数を準備することで、後からの変更も簡単にできわかりやすいです。
早速のご対応ありがとうございます。
なるほど。一度エクセルの欄外で関数で計算すれば良いのですね!
早速試してみたいと思います。
ありがとうございました。
No.2
- 回答日時:
マクロ以前に,まずアタマで「何がどうだったらこうしたい」という段取りを組み立てないと,話がまったく先に進みません。
たとえば
1.シート1のA1セルとC1セルには必ず数字が記入されていなければならない
2.シート2のB2:B10セルに数字が「最低でも一個以上」記入されていなければならない
3.以上の条件を全て満たしたときに,はじめてシート1,2,3を連続で印刷して良い(印刷したい)
とかなんとか言った具合です。
また,ナントナク「シート1,2,3」とかで例示しましたが,それぞれ具体的なシート名が決まっているのかいないのか,印刷したいのはどのシートなのかといった,「テンプレートの実際の運用」に基づいて正しくマクロを組み立てないと,的外れになってしまうのも判りますよね?
作成例:
ブックを開く
ALT+F11を押す
現れた画面でプロジェクトエクスプローラから当該のブックのVBAProjectに含まれているThisWorkbookシートをWクリックして開く
現れたシートに下記をコピー貼り付ける
pvivate sub Workbook_BeforePrint(cancel as boolean)
cancel = true
if worksheets(1).range("A1")="" _
or worksheets(1).range("C3")="" _
or application.count(worksheets(2).range("B2:B10")) = 0 then
msgbox "記入漏れがあります"
else
application.enableevents = false
worksheets(array(1,2,3)).printout
application.enableevents = true
end if
end sub
ファイルメニューから終了してエクセルに戻り,印刷を行う
条件を判定し,OKだった場合は1,2,3枚目のシートが印刷される。
参考にして,あなたが書いた印刷マクロに「印刷して良いのかどうか判断して分岐する」を組み込んで,ごジブンでも作成し直してみてください。
早速のご回答ありがとうございます。
また、大変拙い質問にも関わらずご回答頂きありがとうございました。
頂いた内容を参考にし、まずは自分で作成し直してみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) Excel VBA Backstageビューでの印刷 2 2022/06/03 16:56
- その他(Microsoft Office) Excelのマクロについて教えてください。 1 2022/03/25 10:03
- Excel(エクセル) Excel のヘルプ文の印刷 1 2023/06/07 11:17
- Visual Basic(VBA) VBAで不特定枚数印刷をしたいです。 4 2022/08/02 07:30
- Excel(エクセル) Excel VBAで、行の高さを、上下1文字分程度高くしたい 3 2023/04/23 00:17
- Excel(エクセル) エクセルのマクロで複数シートを両面印刷するには? 2 2022/12/08 23:23
- 事務・総務 郵便払込取扱票への記入揺れ 1 2022/03/26 22:54
- デザイン 自分でテンプレートを作成し印刷して手帳を使う場合、黒字の背景デザインにしたいが、黒い紙に印刷しように 2 2023/08/12 22:28
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでチェックボックスを...
-
VBAを利用して宛名ラベルを作り...
-
Excel マクロ 選択セルの値の枚...
-
PowerPointの表内のカンマ
-
名簿の漢字名を関数で半角カナ...
-
【VBA】PDF出力に任意のファイ...
-
エクセルでハイパーリンクのコピー
-
エクセルの計算式でコンマを付...
-
EXCELでタイトル行と一番下の行...
-
エクセルでセル内改行の1行目...
-
EXCEL 連動したドロップダウン...
-
エクセル関数:文字だけでなく...
-
DATEDIFで作成した勤務年数の並...
-
Excelのテーブル上のセルの保護...
-
【エクセル】入力規則のプルダ...
-
EXCELで縦の行全てに一括して文...
-
Word ○(まる)で表示される空白
-
エクセルの計算結果に+(プラス...
-
エクセル 数式の無効化
-
16桁以上の「0」に変換されてし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでチェックボックスを...
-
Excel マクロ 選択セルの値の枚...
-
VBAを利用して宛名ラベルを作り...
-
エクセルについて
-
EXCEL VBA 印刷時にメッセー...
-
Excelで度数分布表の作り方
-
エクセル マクロで教えて下さい。
-
エクセル vbaのリストボックス...
-
Excel ワークシート関数で参照...
-
Excel VBA 行の検索と値の取得
-
VBA Private Sub Worksheet_Cha...
-
PowerPointの表内のカンマ
-
【VBA】PDF出力に任意のファイ...
-
エクセルの計算式でコンマを付...
-
EXCELでタイトル行と一番下の行...
-
EXCEL 連動したドロップダウン...
-
エクセル 数式の無効化
-
名簿の漢字名を関数で半角カナ...
-
エクセルでハイパーリンクのコピー
-
Wordの差し込み印刷で空白行が...
おすすめ情報