Null nigdy nie jest równy cokolwiek, nawet Null. Użyj funkcji IsNull()
.
If IsNull(Me.textbox.Value) Then
Jeśli chcesz Me.textbox
traktowane tak samo, gdy zawiera pusty ciąg jako kiedy to Null, złączyć pusty ciąg do niego i sprawdzić długość połączonego łańcucha:
If Len(Me.textbox.Value & "") = 0 Then
You może również użyć stałej o nazwie vbNullString
, zamiast literału tekstowego, ""
, dla pustego ciągu znaków.
If Len(Me.textbox.Value & vbNullString) = 0 Then
przy użyciu ciągu dosłownego wymaga VBA skonstruowania tego ciągu od nowa za każdym razem. Z określoną stałą, VBA musi tylko odwoływać się do niej, więc powinno być szybciej i zużywać mniej pamięci. Jednak w wielu (prawdopodobnie większości) przypadkach przewaga wydajności z vbNullString
byłaby tak niewielka, że nie zauważyłbyś różnicy. Zobacz także comment below z David-W-Fenton.
Dla mnie bardziej przekonującym powodem do użycia vbNullString
jest to, że jest natychmiast rozpoznawalny dla moich starzejących się oczu. Odwrotnie, z literałem ciągu, trwa (odrobinę dłużej), aby potwierdzić, że ""
nie jest czymś innym ... jak " "
lub "'"
. Jedynym minusem z vbNullString
, IMO, jest to, że wymaga więcej pisania niż ""
.
I na koniec, chociaż nie musisz wyraźnie odwoływać się do właściwości Value
(ponieważ jest to domyślna właściwość pola tekstowego), zostawiłem ją, ponieważ było tak i ponieważ wolę być jednoznaczna z Value
. :-)
Nie potrzebujesz właściwości .Value w tym przypadku, ponieważ jest to domyślna właściwość elementów sterujących. 'Jeśli IsNull (Me! Textbox) Then' powinien wystarczyć (lub, jeśli ograniczyłeś kontrolę do pola, które zezwala na zły łańcuch o zerowej długości, musisz przetestować długość wartości kontrolnej połączonej z pustym ciągiem , 'If Len (Me! Textbox & vbNullString) = 0 Then' - ale powtarzam tylko to, co wszyscy inni powiedzieli, nie ma wyraźnej właściwości .Value. –