ID非公開

2021/6/10 5:51

33回答

エクセル VBA 空白セルで判定する方法について

補足

⑤はB1が空白なのに、B2orB3or両方が入力されている状態です

Visual Basic | Excel25閲覧xmlns="http://www.w3.org/2000/svg">50

ベストアンサー

0

ID非公開

質問者2021/6/10 11:29

ありがとうございます そうですね! 8パターンでした!! If Range("B3") <> "" Then 'このパターンなし(B1とB2が入力済 B2が空白) ここのB2が被っているのですが、正しくはなんですか?

ThanksImg質問者からのお礼コメント

ありがとうございました

お礼日時:6/14 6:46

その他の回答(2件)

0

HageOyajiさんが言うように8ケース想定しないといけないですね。 ↓8ケースバージョンです。 Sub Check() Dim B1 As Integer Dim B2 As Integer Dim B3 As Integer Dim Ass As Integer B1 = 0 B2 = 0 B3 = 0 If Range("B1").Value <> "" Then B1 = 2 If Range("B2").Value <> "" Then B2 = 3 If Range("B3").Value <> "" Then B3 = 4 Ass = B1 + B2 + B3 If Ass = 9 Then MsgBox "○ 全て入力済みです" ElseIf Ass = 5 Then MsgBox "○ B1とB2が入力済みです" ElseIf Ass = 6 Then MsgBox "○ B1とB3が入力済みです" ElseIf Ass = 2 Then MsgBox "○B1が入力済みです" ElseIf Ass = 0 Then MsgBox "× 「B1」or「B1とB2」or「B1とB2とB3」に入力して下さい" Exit Sub ElseIf Ass = 7 Or Ass = 3 Or Ass = 4 Then MsgBox "× 「B1」を入力後に「B2」と「B3」を入力して下さい" Range("B2").Value = "" Range("B3").Value = "" Exit Sub End If End Sub まあ、マクロで注意喚起もできますが、入力規則で強制入力させても良いと思いますよ。

ID非公開

質問者2021/6/10 11:31

ありがとうございます 確かに8ケースですね! このような方法もあるのですね。 これから試してみます!

0

記載されていることを並べてみました。MsgBox はちょっと変更。 With Range("B1") If (Len(.Value) > 0 And Len(.Offset(1).Value) > 0 And Len(.Offset(2).Value) > 0) Then MsgBox "○全て入力済みです", vbInformation ElseIf (Len(.Value) > 0 And Len(.Offset(1).Value) > 0 And Len(.Offset(2).Value) <= 0) Then MsgBox "○B1とB2が入力済みです", vbInformation ElseIf (Len(.Value) > 0 And Len(.Offset(1).Value) <= 0 And Len(.Offset(2).Value) <= 0) Then MsgBox "○B1が入力済みです", vbInformation ElseIf (Len(.Value) <= 0 And Len(.Offset(1).Value) <= 0 And Len(.Offset(2).Value) <= 0) Then MsgBox "×「B1」or「B1とB2」or「B1とB2とB3」に入力して下さい", vbCritical Exit Sub ElseIf (Len(.Value) <= 0) Then MsgBox "×「B1」を入力後に「B2」と「B3」を入力して下さい", vbCritical .Offset(1).Resize(2).ClearContents Exit Sub End If End With

ID非公開

質問者2021/6/10 11:30

ありがとうございます。 込み入ったパターンを考えて頂いて恐縮です。 試してみますね!