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