Другая замечательная книга, которую я нашел, была:
Рефакторинг к Шаблонам
Путем показа, когда, где и как можно изменить существующий код к шаблонам, он дал мне намного лучшее понимание понятий и способность определить, где они могут использоваться.
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
будет настолько незначительным, что вы не заметите разницу. Также см. Комментарий ниже от Дэвида-В-Фентона .
Для меня более убедительной причиной использования vbNullString
является то, что он мгновенно распознается моими стареющими глазами. И наоборот, со строковым литералом мне требуется (чуть-чуть) больше времени, чтобы подтвердить, что ""
на самом деле не является чем-то другим ... как " "
или "'"
. Единственным недостатком vbNullString
, IMO, является то, что требуется больше печатания, чем ""
.
И, наконец, хотя на самом деле вам не нужно явно ссылаться на свойство Value
(так как это свойство по умолчанию для текстового поля), я оставил его, потому что у вас было так, и потому что я предпочитаю быть явным с Value
тоже. : -) [+1123]
Я не мог заставить это работать, так как я использовал событие KeyUP. Так что вместо этого это то, что сработало для меня.
If(Textbox.Text = '')
...
Так как Textbox.Value обновляется только при событии изменения, он не обновлялся при keyup, поэтому Textbox.Text - это то, что в данный момент находится в окне.
Резюме: В качестве альтернативы, используйте свойство .Text