8

私のIf状態のどこが悪いのですか?

If Not IsEmpty(Wrkgps_L3) And Not IsEmpty(Wrkgps_L4) Then
    Wrkgps_L3L4 = Wrkgps_L3 & "," & Wrkgps_L4
End If

Not条件がうまくいかないようです。Ifステートメント内のコードは、Wrkgps_L3との両方Wrkgps_L4が空の文字列の場合でも実行されます。

アップデート:

Wrkgps_L3関数から返された結果をWrkgps_L4含む変数です。IsEmpty(Wrkgps_L3) = Falseとはいえ気が付いたWrkgps_L3 = ""。コードを次のように書き直す必要がありました

If (Wrkgps_L3 <> "") And (Wrkgps_L4 <> "") Then

いずれにせよ、私はまだIsEmpty変数で動作しない理由を知りたいと思ってい""ます ?

4

2 に答える 2

12

Visual Basic では、Empty""(空の文字列) は 2 つの異なるものです。Empty変数の初期化されていない状態であり、Variant変数に値があるIsEmptyかどうかをテストします。VariantEmpty

Dim x As Variant
If IsEmpty(x) Then
    Debug.Print "x is empty"
End If

ご覧のとおり、変数に空の文字列が含まれている""かどうかを確認するときは、比較する必要があります。String

于 2012-04-06T21:06:09.093 に答える
1

変数が文字列の場合は、次のこともできます。

If Len(Wrkgps_L3) + Len(Wrkgps_L4) = 0 Then
   ' They're both empty string variables
Else
   ' One or the other contains at least one character
End If
于 2012-04-07T17:50:33.660 に答える