Textbox null problem

Другая замечательная книга, которую я нашел, была:

Рефакторинг к Шаблонам

Путем показа, когда, где и как можно изменить существующий код к шаблонам, он дал мне намного лучшее понимание понятий и способность определить, где они могут использоваться.

22
задан darkjh 14 April 2011 в 11:59
поделиться

2 ответа

1118 Нуль никогда не равен ничему, даже Нуль. Используйте функцию 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]

55
ответ дан 29 November 2019 в 03:47
поделиться

Я не мог заставить это работать, так как я использовал событие KeyUP. Так что вместо этого это то, что сработало для меня.

If(Textbox.Text = '') 
  ...

Так как Textbox.Value обновляется только при событии изменения, он не обновлялся при keyup, поэтому Textbox.Text - это то, что в данный момент находится в окне.

Резюме: В качестве альтернативы, используйте свойство .Text

0
ответ дан 29 November 2019 в 03:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: