web-dev-qa-db-ja.com

「値が空でない場合」をVBA言語で表現するにはどうすればよいですか?

「値が空でない場合」という条件をVBA言語で表現するにはどうすればよいですか?こんな感じ?

"if value is not empty then..."
Edit/Delete Message
53
excel34

Not IsEmpty()を使用します。

例えば:

Sub DoStuffIfNotEmpty()
    If Not IsEmpty(ActiveCell.Value) Then
        MsgBox "I'm not empty!"
    End If
End Sub
73
Jon Crowell

テストする内容によって異なります。

  • 文字列には、If strName = vbNullStringまたはIF strName = ""またはLen(strName) = 0を使用できます(最後の1つはおそらく高速です)
  • オブジェクトには、If myObject is Nothingを使用できます
  • レコードセットフィールドの場合は、If isnull(rs!myField)を使用できます
  • excelセルの場合は、If range("B3") = ""またはIsEmpty(myRange)を使用できます

その他...拡張ディスカッションが利用可能 ここ (Accessの場合、ほとんどはExcelでも機能します)。

27
Patrick Honorez

これを試して:

If Len(vValue & vbNullString) > 0 Then
  ' we have a non-Null and non-empty String value
  doSomething()
Else
  ' We have a Null or empty string value
  doSomethingElse()
End If
6
alexphi

組み込みのFormat()関数を使用しないのはなぜですか?

Dim vTest As Variant
vTest = Empty ' or vTest = null or vTest = ""

If Format(vTest) = vbNullString Then
    doSomethingWhenEmpty() 
Else
   doSomethingElse() 
End If

Format()は、空のバリアントとnullのバリアントをキャッチし、それらを文字列に変換します。 null/empty検証などに使用し、コンボボックスでアイテムが選択されているかどうかを確認します。

5
Marcand

これがあなたが探しているものかどうかはわかりません

if var<>"" then
           dosomething

または

if isempty(thisworkbook.sheets("sheet1").range("a1").value)= false then

iSEMPTY関数も使用できます

3
Anthony

Alexphiの提案は良いです。また、最初に変数をVariantとして作成し、次にそれをEmptyに割り当てることで、これをハードコーディングすることもできます。その後、if/thenを使用して、おそらくそれを埋めます。満たされた場合、空ではありません。空でない場合、空のままです。次に、これをIsEmptyでチェックします。

Sub TestforEmpty()

    Dim dt As Variant
    dt = Empty

    Dim today As Date
    today = Date
    If today = Date Then
        dt = today
    End If

    If IsEmpty(dt) Then
        MsgBox "It not is today"
    Else
        MsgBox "It is today"
    End If

End Sub
0
Todd Main