Null никогда не равен ничего, даже нет. Используйте функцию IsNull()
.
If IsNull(Me.textbox.Value) Then
Если вы хотите Me.textbox
относились так же, когда она содержит пустую строку, когда это Null, сцепить пустую строку к нему и проверить длину комбинированной строки:
If Len(Me.textbox.Value & "") = 0 Then
You также может использовать именованную константу, vbNullString
, вместо строкового литерала, ""
, для пустой строки.
If Len(Me.textbox.Value & vbNullString) = 0 Then
Использование строкового литерала требует, чтобы VBA каждый раз строил эту строку с нуля. С указанной константой VBA нужно только ссылаться на нее, поэтому она должна быть быстрее и использовать меньше памяти. Однако во многих (возможно, большинстве) случаях преимущество производительности с vbNullString
было бы настолько незначительным, что вы не заметили разницы. Также см. comment below от David-W-Fenton.
Для меня более неотложной причиной использования vbNullString
является то, что он мгновенно узнаваем мои стареющие глаза. И наоборот, с строковым литералом для меня требуется (крошечный бит) дольше, чтобы подтвердить, что ""
на самом деле не что-то еще ... например " "
или "'"
. Единственным недостатком с vbNullString
, IMO, является то, что требуется больше ввода, чем ""
.
И, наконец, хотя на самом деле вам не нужно явно ссылаться на свойство Value
(так как это свойство по умолчанию для текстового поля), я оставил его, потому что у вас это было так и потому, что я предпочитаю быть явным с Value
, тоже. :-)
В этом случае вам не нужно свойство .Value, так как это свойство элементов управления по умолчанию. 'If IsNull (Me! Textbox) Then' должно быть достаточно (или, если вы привязали элемент управления к полю, которое допускает злую строку нулевой длины, вам нужно будет проверить длину значения элемента управления, связанного с пустой строкой , 'Если Len (Me! Textbox & vbNullString) = 0 Тогда' - но я просто повторяю то, что говорили все остальные, без явного свойства .Value. –