Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8903 / 13646 ツリー ←次へ | 前へ→

【30393】If文で・・・ りんご 05/10/26(水) 16:47 質問[未読]
【30394】Re:If文で・・・ Jaka 05/10/26(水) 17:13 回答[未読]
【30395】Re:If文で・・・ Statis 05/10/26(水) 17:15 回答[未読]
【30398】Re:If文で・・・ りんご 05/10/26(水) 17:49 質問[未読]
【30400】Re:If文で・・・ Statis 05/10/26(水) 18:10 回答[未読]
【30413】Re:If文で・・・ awu 05/10/27(木) 0:58 回答[未読]
【30421】Re:If文で・・・・ りんご 05/10/27(木) 10:45 質問[未読]
【30426】Re:If文で・・・・ Statis 05/10/27(木) 11:55 発言[未読]
【30429】Re:If文で・・・・ awu 05/10/27(木) 12:27 発言[未読]
【30430】Re:If文で・・・・ Statis 05/10/27(木) 12:32 発言[未読]
【30435】Re:If文で・・・・ りんご 05/10/27(木) 13:16 お礼[未読]

【30393】If文で・・・
質問  りんご  - 05/10/26(水) 16:47 -

引用なし
パスワード
   超初心者でやりはじめたばかりなのですがぜひともわかる方
教えてください。
注文書を作ってまして、印刷ボタンをクリックすると印刷画面へ行くところの下
の処理で、下文が元で
Sub 印刷btn_Click()
  '画面を固定
   Application.ScreenUpdating = False
     
  'プレビュー画面を表示
  Sheets("印刷").PrintPreview
  
  '画面の固定を解除
  Application.ScreenUpdating = True
End Sub
これに(できればIf文で)もし指定範囲に一つでも入力がなかった場合はMsgBoxを表示するようにしたいのです。
If Range("I4,D9,I8,I9,C13:C27,H13:H27") = Then
     MsgBox "未入力があります。確認して下さい"
   Exit Sub
  End If
画面固定後に上みたいなかたちでいれたいのですがThenの前には何が入るのでしょうか?ちなみに違うとこもあったら教えてください。

【30394】Re:If文で・・・
回答  Jaka  - 05/10/26(水) 17:13 -

引用なし
パスワード
   数値だけの場合だったらどうなるのか確認を取っていませんが...。

これで、入力されているかどうかわかると思います。
MsgBox Application.CountA(Range("I4,D9,I8,I9,C13:C27,H13:H27"))

【30395】Re:If文で・・・
回答  Statis  - 05/10/26(水) 17:15 -

引用なし
パスワード
   こんにちは

こんな感じかな
If WorksheetFunction.Count(Sheets("印刷").Range("I4,D9,I8,I9,C13:C27,H13:H27")) <> 34 Then
  MsgBox "未入力があります。"
End If

【30398】Re:If文で・・・
質問  りんご  - 05/10/26(水) 17:49 -

引用なし
パスワード
   Statisさん、Jakaさん早速のお返事ありがとうございます。
ちなみに、Statisさんの場合の

>If WorksheetFunction.Count(Sheets("印刷").Range("I4,D9,I8,I9,C13:C27,H13:H27")) <> 34 Then
>  MsgBox "未入力があります。"
>End If
上記の場合で範囲のC13:C27とH13:H27なのですが
ここの部分は注文シートの品番と数量が入るところなのですべて全部取得するわけではないんですね。1行の時もあれば6行で終わる時もあるん
ですよ。
そういう時はどうなりますか?
最終行取得If文をさらにつっこめばいいのでしょうか?
よろしくお願い致します。

【30400】Re:If文で・・・
回答  Statis  - 05/10/26(水) 18:10 -

引用なし
パスワード
   こんばんは。

>上記の場合で範囲のC13:C27とH13:H27なのですが
>ここの部分は注文シートの品番と数量が入るところなのですべて全部取得するわ
>けではないんですね。1行の時もあれば6行で終わる時もあるんですよ。
最初に書いて頂かないとこちらでは判りません。


Jakaさんが記載された「CountA関数」の方が正解ですね。

こんな感じかな?。

Sub Test()
Dim Ch As Boolean
Ch = True
With Sheets("印刷")
   If WorksheetFunction.CountA(.Range("I4,D9,I8,I9")) <> 4 Then: Ch = False
   If WorksheetFunction.CountA(.Range("C13:C27")) = 0 Then: Ch = False
   If WorksheetFunction.CountA(.Range("H13:H27")) = 0 Then: Ch = False
   If Ch = False Then
    MsgBox "未入力があります。"
    Exit Sub
   End If
   .PrintPreview
End With
End Sub

【30413】Re:If文で・・・
回答  awu  - 05/10/27(木) 0:58 -

引用なし
パスワード
   ▼りんご さん:
>上記の場合で範囲のC13:C27とH13:H27なのですが
>ここの部分は注文シートの品番と数量が入るところなのですべて全部取得するわけではないんですね。1行の時もあれば6行で終わる時もあるん
>ですよ。

データの未入力を検知するのですから、データ範囲の最終行を決定できる列が
必要と思いますよ。

例えば、A列に「受注No」が必ず入力されていて、その最終行までをデータ
範囲とする などのように。

A列の最終行をデータの最終行とした場合、こんな感じで如何でしょうか。

Sub test()
Dim Rng As Range
Dim EndRw As Long
EndRw = Range("A65536").End(xlUp).Row
Set Rng = Range("I4,D9,I8,I9,C13:C" & EndRw & ",H13:H" & _
        EndRw).Find("", lookat:=xlWhole)
If Not Rng Is Nothing Then
  MsgBox Rng.Address(False, False) & _
        " に未入力があります。確認して下さい"
End If
Set Rng = Nothing
End Sub

【30421】Re:If文で・・・・
質問  りんご  - 05/10/27(木) 10:45 -

引用なし
パスワード
   度々すみません。
awuさんの場合で試してみた所、C1,C2,C3といった全く関係ない所も
MsgBoxがでてしまいます。
Statisさんの場合では、範囲指定しているセルすべてに値が入っていても
まだMsgBoxがでてしまいます。

度々すみませんが解決方法わかれば
お願い致します。

【30426】Re:If文で・・・・
発言  Statis  - 05/10/27(木) 11:55 -

引用なし
パスワード
   ▼りんご さん:
こんにちは

>Statisさんの場合では、範囲指定しているセルすべてに値が入っていても
>まだMsgBoxがでてしまいます。

こちらでは出ませんが?
指定範囲は正しいですか?

【30429】Re:If文で・・・・
発言  awu  - 05/10/27(木) 12:27 -

引用なし
パスワード
   ▼りんご さん:
>度々すみません。
>awuさんの場合で試してみた所、C1,C2,C3といった全く関係ない所も
>MsgBoxがでてしまいます。

提示したコードそのままでテストしましたか?

Rng にC1,C2,C3は、含まれていないのですが・・・

不思議です。

【30430】Re:If文で・・・・
発言  Statis  - 05/10/27(木) 12:32 -

引用なし
パスワード
   ▼awu さん:
こんにちは、(横から失礼します)
>>度々すみません。
>>awuさんの場合で試してみた所、C1,C2,C3といった全く関係ない所も
>>MsgBoxがでてしまいます。
>
>提示したコードそのままでテストしましたか?
>
>Rng にC1,C2,C3は、含まれていないのですが・・・
>
>不思議です。

もしかしてA列に値がないとか?

【30435】Re:If文で・・・・
お礼  りんご  - 05/10/27(木) 13:16 -

引用なし
パスワード
   ▼Statis さん:
>▼awu さん:
>こんにちは、(横から失礼します)
>>>度々すみません。
>>>awuさんの場合で試してみた所、C1,C2,C3といった全く関係ない所も
>>>MsgBoxがでてしまいます。
>>
>>提示したコードそのままでテストしましたか?
>>
>>Rng にC1,C2,C3は、含まれていないのですが・・・
>>
>>不思議です。
>
>もしかしてA列に値がないとか?

Statisさんの言ったとおり、自分が作った表にはA列には値がなかったので
できなかったっぽいです。値がある列でできました。
こんな事は自分でみて気づかないといけない事なのにすみません。
助けていただいたおかげでできました。ありがとうございました。

8903 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free