2017-07-27 15 views
1

3つのオプションボタンを持つMicrosoft Form 2.0フレームコントロールがあります。フレームコントロールの名前はSide、オプションボタンのキャプションはX,、RandomxOption,oOptionrandomSideです。 起動時を除いて、コードは正常に実行されます。Excelを開いてすぐにプログラムを実行すると、Error 91が表示されます。オプション(XO、またはRandom)のいずれかが既に選択されていることに注意してください。このエラーを取り除くには、別のオプションを明示的に選択する必要があります。エラーが消えてしまいます。なぜこのようなことが起こるのか分かりません。ここでFrameコントロール起動時のフレームコントロールのエラー91

Public Sub Side_Click() 

sideLetter = Side.ActiveControl.Caption 
If StrComp(sideLetter, "Random") = 0 Then 
    Randomize 
    tempRand = Int((Rnd() * 2 + 1)) 
    If tempRand = 1 Then 
     sideLetter = "X" 
    Else 
     sideLetter = "O" 
    End If 
End If 
End Sub 

ためのサブがあるラインsideLetter = Side.ActiveControl.Captionは、問題の原因です。明示的にフレームコントロールとしてSideを宣言していないのは、オブジェクトがフレームコントロールを作成するだけで既に宣言されていると思っているので、役に立つ情報です。前もって感謝します!

答えて

1

あなたは前にあなたはそれがキャプションだ読んSide.ActiveControlは、実際のオブジェクトであることを確認する必要があります。

Public Sub Side_Click() 
If Not Side.ActiveControl Is Nothing Then 
    sideLetter = Side.ActiveControl.Caption 
    If StrComp(sideLetter, "Random") = 0 Then 
     Randomize 
     tempRand = Int((Rnd() * 2 + 1)) 
     If tempRand = 1 Then 
      sideLetter = "X" 
     Else 
      sideLetter = "O" 
     End If 
    End If 
End If 
End Sub 
+0

はオブジェクトとして特定のフレームコントロールを宣言するとにかくはありますか?たとえば、X変数をサイドフレームコントロールobjとして宣言しますか? –

+0

'Dim myFrame As MSForms.Frame' – ThunderFrame

関連する問題