- 締切済み
印刷制御について
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に文字が入ってないと出来ない様にする事は可能でしょうか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- fujillin
- ベストアンサー率61% (1594/2576)
>上記では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 でこの後に続ければ同様に表記できますので、トライしてみてください。
お礼
出来ました!有難うこざいます。とても助かりました。