Excel 启动时帧控制出现错误91

Excel 启动时帧控制出现错误91,excel,vba,activex,Excel,Vba,Activex,我有一个带有三个选项按钮的Microsoft Form 2.0框架控件。帧控件的名称为Side,三个选项按钮标题分别为X、O、和Random,它们的名称分别为xOption、oOption、和randomSide。 代码运行正常,除非在启动时,如果我打开Excel并立即运行程序,它将给我一个错误91,请注意,其中一个选项(X,O,或Random)已经选中。为了消除这个错误,我需要显式地选择另一个选项,然后错误消失。我不知道为什么会这样。下面是帧控件的子控件 Public Sub Side_Cli

我有一个带有三个选项按钮的Microsoft Form 2.0框架控件。帧控件的名称为
Side
,三个选项按钮标题分别为
X
O
、和
Random
,它们的名称分别为
xOption
oOption
、和
randomSide
。 代码运行正常,除非在启动时,如果我打开Excel并立即运行程序,它将给我一个
错误91
,请注意,其中一个选项(
X
O
,或
Random
)已经选中。为了消除这个错误,我需要显式地选择另一个选项,然后错误消失。我不知道为什么会这样。下面是
控件的子控件

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
作为帧控件,以防这是一些有用的信息,因为我认为仅仅通过创建帧控件就已经声明了对象。提前谢谢

在阅读标题之前,您需要检查
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

是否仍要将特定帧控件声明为对象?例如,将X变量声明为侧框控件obj?
Dim myFrame作为MSForms.Frame