• 締切済み

印刷制御について

VBA全くの初心者です Private Sub Workbook_BeforePrint(Cancel As Boolean) If Range("A1").Value = 文字 Then Cancel = True End If End Sub 上記ではA1に文字が入ってないと印刷が出来ないのは分かりますが 例えばsheet1を印刷する時は、A1とA3とB5に文字が入ってないと印刷出来ない様にして、Sheet2を印刷する時は、A2とA4とB6に文字が入ってないと出来ない様にする事は可能でしょうか?

みんなの回答

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

>上記ではA1に文字が入ってないと印刷が出来ないのは分かりますが 実際の動作はご説明のようになりますが、本当にそういうつもりで書かれていますか? >If Range("A1").Value = 文字 Then セルA1の値が文字だったら、キャンセルというつもりで書いていませんか? 通常文字入力の有無はIsNull()関数を使うか、""と比較するかなどで判定します。 上の文だと If Range("A1").Value = "" Then となるところではないのかなぁと思いますが・・・ また、その内容が数字か文字かが問題になる場合には、数字を判定するために IsNumeric()関数が用意されていますので、そちらを利用してください。 さて、『sheet1を印刷する時は、A1とA3とB5に文字が入ってないと印刷出来ない様に』するなら If (ActiveSheet.Name = "Sheet1") And ((Range("A1").Value = "") _   Or (Range("A3").Value = "") Or (Range("B5").Value = "")) Then   Cancel = True   MsgBox ("必要事項を入力してください!") End If となります。(A1、A3、B5のうち一つでも未入力があればキャンセル) Sheet2の場合の条件は、else if でこの後に続ければ同様に表記できますので、トライしてみてください。

masa1717
質問者

お礼

出来ました!有難うこざいます。とても助かりました。

関連するQ&A