2015-08-19 5 views
0

У меня есть пользовательская форма с тремя полями (текстовое поле, поле для команд и поле списка), и я пытаюсь сделать так, чтобы при нажатии OK, если все поля не были заполнены, вы получите сообщение об ошибке сообщение. Таким образом, все три поля должны быть заполнены.Обязательные поля в Userform

Я пробовал код ниже, который изначально работает для текстового поля (но если вы введете значение, а затем удалите его, сообщение не появится снова), но не будет работать в поле команды.

Если кто-то может помочь с этим, было бы весьма признателен:

If CR_Slide.CRNumber.Text = " " Then 
MsgBox "Complete all fields" 
End If 

If CR_Slide.Severity.SelText = " " Then 
MsgBox "Complete all fields" 
End If 
+0

Почему "" вместо ""? Строка, содержащая одно пробел, не является пустой строкой –

ответ

0

Вы проверяете, является ли ввод строкой, состоящей из одного пробела. Тот факт, что вы сказали, что он работает в первый раз для текстового поля, предполагает, что иногда у вас есть непустое пустое пространство. Вы можете взять текст и первым запустить его через функцию trim которая будет обрежьте все белое пространство строку вниз в пустую строку, которая является уникальной строкой длины 0. Что-то вроде:

If Len(Trim(CR_Slide.CRNumber.Value)) = 0 Then 
MsgBox "Complete all fields" 
End If 

If Len(Trim(CR_Slide.Severity.Value)) = 0 Then 
MsgBox "Complete all fields" 
End If 

должен работать. (Я переключился с Text на Value, так как это стандартно, чтобы получить вход пользователя через свойство управления Value).

+0

Я полностью пропустил, что ОП искал пробел. Я мог бы добавить, хотя по-прежнему неплохо закончить код после окна сообщения, иначе если вы скажете 5 полей без записей, которые вы проверите, вы получите 5 сообщений. –

0

Вы, вероятно, хотите, чтобы закончить процедуру, когда коробка выдвинулась:

If CR_Slide.CRNumber.Text = " " Then 
MsgBox "Complete all fields" 
End 
End If 

If CR_Slide.Severity.SelText = " " Then 
MsgBox "Complete all fields" 
End 
End If 

Или, может быть Exit Sub вместо End