- ベストアンサー
VBAセルの値が指定数量に満たない時に印刷させない
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ご質問の総数及びロットの入力セルなどの情報が記載されていないので If構文で使われているR2及びR5が該当のデータが入っているセルとして判断します。 赤枠内1行目が「If Range("R2") ~ Then」以下のようになっています。 if a >= b = c then 真の場合の処理 end if このような処理の場合、a>=bが判定された結果が=cと判定されます。 判定された結果はtrueかfalseのブール型(boolean)で返りますので、 = ""と比較結果がfalseとなり、if構文による真の処理部分は実行されません。 「条件のうちどれかに当てはまる場合」は「or(=又は)」、 「すべての条件に当てはまる場合」は「and(=且つ)」を使用します。 aとbの比較以外にaまたはbが空白の場合も真の処理を行いたい場合、 if a>=b or a="" or b="" then このようにしてください。 また、 >=は「大なりイコール」なので、同じ場合も含みます。Exit Subで処理を終わらす場合は 印刷したい場合(イコールの場合)を含めてはいけません。 よって、比較演算子は>を使用しましょう。 余談ですが、msg1がブランク以外の場合のmsg1=msg1が謎です。 詳しくはif構文及び比較演算子、論理演算子について調べてみてください。 http://www.officepro.jp/excelvba/basic/index6.html
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
印刷は、VBAでPrintOutメソッドでやっているということか。 IF文で印刷しない、または印刷する、条件のコードを、PrintOutの前に入れたら仕舞では。 そもそもIF文のコードで質問が出る理由が、納得できない。こんなのは質問者でないと詳しく(ケースわけ)はわからない。肝心なことは、読者には、テストもできない。 PrintOutコード行の前に Msgbox "印刷" と入れる PrintOutコード行は一時的にコメントアウト(') してテストしてみたら。 ーー もう一つ、 改めて、この質問掲出後、読者の立場で、どうしたら掲出した画像を、はっきり大きくして見れるのか(見る方法ありますか)教えて。 コードがぼやけていて、わからないので、コードの添削もできない。 ーー IF文の代わりにCACE文の表現で書き換えて、心機一新してみたら。
お礼
eden3616さん ご丁寧にありがとうございます。 なんとなく見えてきました。 ご教授いただいた内容含め、試してみます。 ありがとうございました。