プロが教える店舗&オフィスのセキュリティ対策術

シートABCの
セル D8・D9・D10・D12の中で空白のセルが有ったら、
メッセジボックスで「入力漏れがあります。入力画面を確認して下さい。」
と表示させ、入力漏れの無いことが確認出来ている時は、次の処理に進ませるには、どのようにプログラムを書いたら良いでしょうか?

ご教示下さい。
宜しくお願い致します。

A 回答 (4件)

 


開始ボタンが、対象となるシートABCではなく、
別なシート(例えば、シートXYZ)上にあるのではありませんか?
 
そしてまた、提示のコードが、シートモジュールに書いてあるか
標準モジュールに書いてあるかでも違ってきます。

が、それらに関係なく動作させるためには、下記のように、
それぞれのRangeの前にシート名を付加してやります。

'-------------------------------------------------

If Sheets("ABC").Range("D8") = "" _
  Or Sheets("ABC").Range("D9") = "" _
  Or Sheets("ABC").Range("D10") = "" _
  Or Sheets("ABC").Range("D12") = "" Then

'-----------------------------------------------
これではコードが長くなるので、ふつうは、
Withやオブジェクト変数を使ったりしますが。

外しましたらご容赦!
以上。
    • good
    • 0
この回答へのお礼

有難うございました。
確認不足で仰るとおりでした。

無事解決できました。

お礼日時:2008/12/11 16:12

セルの選択が D8,D9,D10,D12になった場合に実行するなら


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim r As Range
  Set r = Intersect(Union(Range("D8:D10"), Range("D12")), _
    Target)
  If Not r Is Nothing Then
    If WorksheetFunction.CountA(Union(Range("D8:D10"), _
      Range("D12"))) < 4 Then
      MsgBox "入力漏れがあります"
    End If
  End If
End Sub
といった具合でしょう ・・・
    • good
    • 0

どう言ったタイミングでメッセージを出す・出さないを決めているのでしょうね?



例えば4個のセルの値の長さ(LEN関数)の積を出してみる。
0であればどこかのセルに値がない。
0以外であれば全てのセルに値がある。
とか?

この回答への補足

ご回答頂き、有難うございます。
メッセージ表示のタイミングは、処理開始のボタンを押したときで、
現在は、下記のようにしてみましたが、各セルに値が入力されていても、処理がストップしてメッセージ表示がされます。
D8~D10には、「H○○年」と入力され、D12には参照するファイルの存在場所のパスがフルパスで入力されます。
D12の例:C:\Documents and Settings\abcdef\デスクトップ\データ(改修テスト)現在メッセージボックス表示させようと使用した文↓
If Range("D8") = "" Or Range("D9") = "" Or Range("D10") = "" Or Range("D12") = "" Then
i = MsgBox("入力漏れがあります。入力画面を確認して下さい。", vbOKOnly)
Exit Sub
です。宜しくお願いします。

補足日時:2008/12/02 13:35
    • good
    • 0

If (空白の判定式) then


 MsgBox("「入力漏れがあります。入力画面を確認して下さい。」")
Else
 次の処理
End If
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!