• ベストアンサー

VBAセルの値が指定数量に満たない時に印刷させない

皆様いつもお世話になります。 行き詰ってしまったので質問させてください。 複数セルが空白なら印刷させないコードを作ったのですが、そこへ総数が納入ロットより少ない時 と総数が納入ロットより大きい時に警告メッセージを表示して印刷させたくないのです。 もちろん総数=納入ロットは印刷します。 現状のコードでは印刷できてしまうのです。 お手数ですが、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • eden3616
  • ベストアンサー率65% (267/405)
回答No.1

ご質問の総数及びロットの入力セルなどの情報が記載されていないので 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

totozaemon
質問者

お礼

eden3616さん ご丁寧にありがとうございます。 なんとなく見えてきました。 ご教授いただいた内容含め、試してみます。 ありがとうございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

印刷は、VBAでPrintOutメソッドでやっているということか。 IF文で印刷しない、または印刷する、条件のコードを、PrintOutの前に入れたら仕舞では。 そもそもIF文のコードで質問が出る理由が、納得できない。こんなのは質問者でないと詳しく(ケースわけ)はわからない。肝心なことは、読者には、テストもできない。 PrintOutコード行の前に Msgbox "印刷" と入れる PrintOutコード行は一時的にコメントアウト(') してテストしてみたら。 ーー もう一つ、 改めて、この質問掲出後、読者の立場で、どうしたら掲出した画像を、はっきり大きくして見れるのか(見る方法ありますか)教えて。 コードがぼやけていて、わからないので、コードの添削もできない。 ーー IF文の代わりにCACE文の表現で書き換えて、心機一新してみたら。

関連するQ&A