
初めまして、こんにちは。
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでチェックボックスを...
-
VBAを利用して宛名ラベルを作り...
-
【VBA】PDF出力に任意のファイ...
-
エクセルでセル内改行の1行目...
-
PowerPointの表内のカンマ
-
【エクセル】入力規則のプルダ...
-
エクセル 数式の無効化
-
EXCELでタイトル行と一番下の行...
-
エクセル関数:文字だけでなく...
-
エクセルで、50銭以下切捨て...
-
エクセルの計算式でコンマを付...
-
エクセル 0:00 の時間をカウン...
-
EXCEL 連動したドロップダウン...
-
セル上に表示された見かけ上の...
-
【Excel】選択したすべてのセル...
-
エクセルでハイパーリンクのコピー
-
Excelでセルを次の行の先頭の列...
-
DATEDIFで作成した勤務年数の並...
-
エクセルで休日の「休」という...
-
名簿の漢字名を関数で半角カナ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでチェックボックスを...
-
VBAを利用して宛名ラベルを作り...
-
EXCEL VBA 印刷時にメッセー...
-
Excel マクロ 選択セルの値の枚...
-
外部データの取り込みについて
-
excelの参照に関する質問です。
-
CSVデータを任意の様式に入れる...
-
Excel ピボットテーブル エラ...
-
Excel vbaのテキストボックスの...
-
EXCEL97VBAにおける、TREND(ワ...
-
Excel プルダウンリスト
-
エクセル vbaのリストボックス...
-
印刷範囲をマクロで変更したい
-
Excel ワークシート関数で参照...
-
Excelで度数分布表の作り方
-
エクセルについて
-
PowerPointの表内のカンマ
-
エクセル 数式の無効化
-
【VBA】PDF出力に任意のファイ...
-
EXCELでタイトル行と一番下の行...
おすすめ情報