2013-08-07 1 views
0

Я использую Excel 2011 для Mac. У меня есть пользовательская форма, содержащая 3 поля со списком. Данные в комбинированных ячейках заполняются информацией из электронной таблицы. Инициализация заполняет поля со списком. У меня есть кнопка, которая инициирует обработку данных. На первом этапе процесса, проверить, что пользователь случайно не нажал на кнопку:Проверка состояния перед продолжением формы

If (cmbStage.Text = "") Or cmbLowDt.Value = "" Or cmbHighDt.Value = "" Then 
MsgBox "You are not ready to begin processing!", vbOKOnly 
cmbStage.Text = "" 
cmbLowDt.Value = "" 
cmbHighDt.Value = "" 

Else 
End If 

В основном это проверяет, если пользователи не заполнили ничего. Моя проблема в том, что если я добавлю команду GoTo и снова запустил чек, так как я вызвал функцию из-за нажатия кнопки, я просто повторяю сообщение снова и снова.

Что я хочу сделать, это проверить условие, если оно существует, попросить пользователя начать, как будто они не нажали кнопку. Это неотъемлемая часть процесса, поскольку это происходит после некоторой длительной обработки, чтобы добраться до этого момента.

Если я не могу сделать, я просто хотел бы поставить полное сообщение экрана, который говорит: «Вы полный идиот, и не должен быть разрешен в любом месте рядом с компьютером на баланс вашей естественной жизни», vbOkayOnly

ответ

1

Поскольку ваша кнопка запускает новый процесс, почему бы просто не дать этому утверждению if быть шлюзом для остальной части вашего кода?

Sub buttonPress() 
If (cmbStage.Text = "") Or cmbLowDt.Value = "" Or cmbHighDt.Value = "" Then 
    MsgBox "You are not ready to begin processing!", vbOKOnly 
    cmbStage.Text = "" 
    cmbLowDt.Value = "" 
    cmbHighDt.Value = "" 
    End 
Else 
'Continue with your task 
End If 
End Sub 

Или, если вы не можете закончить ....

Sub buttonPress() 
If (cmbStage.Text = "") Or cmbLowDt.Value = "" Or cmbHighDt.Value = "" Then 
    MsgBox "You are not ready to begin processing!", vbOKOnly 
    Set yourForm = aNewInstanceOfTheFOrm 
    cmbStage.Text = "" 
    cmbLowDt.Value = "" 
    cmbHighDt.Value = "" 
Else 
'Continue with your task 
End If 
End Sub 
+0

В дополнении к этому, вы можете проверить каждое отдельное состояние и заставить фокус на конкретный элемент управления. например Если cmdStage.Text = "", тогда msgbox ("Введите что-нибудь здесь") cmdStage.SetFocus End If. Это очень эффективно, чтобы заставить их понять, что им нужно заполнить, а не общее, «что-то не так». Еще немного кодирования, хотя ... – APrough

 Смежные вопросы

  • Нет связанных вопросов^_^