2013-10-10 8 views
0

На этот раз я делал флажки с параметрами, поэтому я вставлял код с речевыми метками вокруг ответа, тогда я попытался использовать его, но он просто не сработает. Код, который я размещал, был:Мой vba перестает работать снова?

Private Sub OptionButton1_Click() 
    If OptionButton1.Value = "Stores all the components" Then 
     MsgBox "That is correct. Well done!" 
     SlideShowWindows(1).View.Next 
    Else 
     MsgBox "Sorry, that is not right. Try again" 
    End If 
End Sub 

Пожалуйста, помогите мне?

+0

Если я правильно помню (и предполагая, 'OptionButton1' является экземпляром OptionButton), то' value' свойство Boolean, а не String. – ssarabando

+0

, пожалуйста, помогите мне! –

+0

Я не понимаю, что вы пытаетесь сказать, пожалуйста, объясните это дальше. –

ответ

1

Я думаю, что вы пытаетесь это

If OptionButton1.Caption = "Stores all the components" 

или Этот

If OptionButton1.Value = True Then 
+0

Так что мне нужно положить в –

+0

Я чувствую, что это должно быть второе, что вам нужно потому что сколько титров может иметь одна кнопка с опцией:) –

+0

oh wait Я как-то получаю это сейчас, давайте попробуем посмотреть, работает ли она –

0

OptionButton в VBA имеет значение 0 (не выбрано) или -1 (проверено). Если вы ищете, что говорит опция option, я считаю, что вы хотите. Подпись вместо .Value

EDIT: Посмотрев на свой код, я вижу фундаментальный недостаток. Вы назначаете это только щелчку по опции, поэтому, если первая кнопка не имеет правильного значения, ничего не произойдет. Я думаю, что вам нужно, это подпрограмма, как этот

Private Sub checkAnswer (answer as string) 
    dim expecTedAnswer as string 
    expectedAnswer = "The correct answer" 
    if answer = expectedanswer then 
     msgbox "Correct" 
    else 
     msgbox "Incorrect" 
    end if 
End sub 

Затем в опции мыши, просто вызовите Sub

CheckAnswer(OptionButton1.Caption) 

Обратите внимание, что это очень некрасиво (вы хотели бы создать легко используемое призвание метод и способ установки правильного ответа), но он должен дать вам что-то, чтобы продолжить.

0

Чуть симпатичнее возможно ...

Каждый OptionButton нажмите событие вызывает CheckAnswer:

Private Sub OptionButton1_Click() 
    If CheckAnswer(Me.OptionButton1, "Correct answer") Then 
     MsgBox "Good user. GOOD!" 
    Else 
     MsgBox "Bad user! BAD! Go stand in the corner." 
    End If 
End Sub 

Private Sub OptionButton2_Click() 
    If CheckAnswer(Me.OptionButton2, "Correct answer") Then 
     MsgBox "Good user. GOOD!" 
    Else 
     MsgBox "Bad user! BAD! Go stand in the corner." 
    End If 
End Sub 

Function CheckAnswer(oCtl As Object, sCorrectAnswer As String) As Boolean 
    If UCase(oCtl.Caption) = UCase(sCorrectAnswer) Then 
     CheckAnswer = True 
    Else 
     CheckAnswer = False 
    End If 
End Function 
Смежные вопросы