2015-08-11 3 views
0

Я создаю форму, которая позволяет пользователям вводить оценки 1-5 для заданных категорий. В этом примере On_Time_Payment). Для каждой категории оценка 3 или менее должна содержать объяснение в поле комментариев (в этом случае On_Time_Payment_Comments). Я пытаюсь написать что-то, что заставит пользователя что-то ввести, если значение On_Time_Payment ниже 4; тем не менее, то, что я имею прямо сейчас, позволяет пропускать любые баллы в поле комментариев.Доступ к обязательным полям поля

Private Sub On_Time_Payment_Comments_Exit(Cancel As Integer) 
    If On_Time_Payment.Value < 4 Then 
     If Len(On_Time_Payment_Comments) > 0 Then 
     End If 
     Else 
      MsgBox "The value you entered for On Time Payment is 3 or less." 
      Cancel = True 
      On_Time_Payment_Comments.SetFocus 
    End If 
End Sub 

Любая помощь очень ценится!

+0

Аналогичный вопрос также размещен здесь [http://stackoverflow.com/questions/31982107/] –

ответ

0
Private Sub On_Time_Payment_Comments_Exit(Cancel As Integer) 
    If On_Time_Payment.Value < 4 Then 
     MsgBox "The value you entered for On Time Payment is 3 or less." 
     If Len(On_Time_Payment_Comments) = 0 Then 
      Cancel = True 
      On_Time_Payment_Comments.SetFocus 
     Else 
      MsgBox On_Time_Payment_Comments, vbokonly, "Len: " & len(On_Time_Payment_Comments) 
     End If 
    End If 
End Sub 
+0

По какой-то причине это пропускает окно сообщения даже тогда, когда OTP.Value <4. Я дважды проверил, что ничего не было в OTP_Comments. Может ли это иметь какое-то отношение к выбору события? – StigsLeftFoot

+0

Это лучше? – DiegoAndresJAY

+0

Да, это работает намного лучше. По какой-то причине это не фокусирует внимание на OTP_Comments. Все еще пытаюсь определить, что с этим происходит. Пробовал менять событие на LostFocus без успеха. – StigsLeftFoot

0

Ваш первоначальный ответ был относительно близок к тому, что вам нужно, но я думаю, что вы потеряли следы структуры If-Else-End If. Вот что я думаю, что вы хотите:

`Private Sub On_Time_Payment_Comments_Exit(Cancel As Integer) 

    If On_Time_Payment.Value < 4 Then 

     If (Len(On_Time_Payment_Comments) <= 0 Or IsNull(On_Time_Payment_Comments)) Then 
      MsgBox "The value you entered for On Time Payment is 3 or less." 
      Cancel = True 
      On_Time_Payment_Comments.SetFocus 
     End If 

    End If 

End Sub 

`

0

Оказывается, там было что-то происходит с наименованием и свойствами полей против текстовых полей на формах. В настоящее время это работает:

Private Sub On_Time_Payment_Comments_Exit(Cancel As Integer) 
    If On_Time_Payment.Value < 4 Then 
    If IsNull(On_Time_Payment_Comments) Then 
     MsgBox "The score you entered for On Time Payment is less than 4. Please provide an explaination in the comment field." 
     Cancel = True 
     On_Time_Payment_Comments.SetFocus 
    End If 
    End If 
End Sub 

Спасибо всем, что с этим помогло!

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