关于用户表单中的选项按钮

时间:2013-11-05 03:29:16

标签: excel-vba user-controls vba excel

我有一个问题:

我需要创建一个包含通常的OK和Cancel Buttons的用户表单。它还应该包含两组选项按钮,每组都放在一个框架内。第一组的标题应该是篮球,棒球,足球,第二组的标题应该是在电视上观看转到游戏 。我需要在模块中编写事件处理程序和代码,以便在程序运行时,用户可以看到表单。如果用户做出几个选择并单击“确定”,他应该会看到一条消息,例如“您最喜欢的运动是篮球,而您通常会在电视上观看”。如果用户单击“取消”,则会显示“抱歉您不想播放”消息。

enter image description here

我认为我几乎可以使用它,但我不知道为什么我无法成功执行宏。

我的代码是:

Option Explicit

Private Sub CommandButton2_Click()


MsgBox ("sorry if you don't want to play")
End Sub

Private Sub commandbuttons_Click()
Dim optbasket As String, optbaseball As String, optfootball As String
Dim optwog As String, optgtg As String

 Select Case True
 Case optbasket
   optbasket = True
 Case optbaseball
   optbaseball = True
 Case optfootball
   optfootball = True
  End Select

If optwog Then
  optwog = True
  Else
  optgtg = True
  End If

btnok = MsgBox("you favorite sport is " & Frame1.Value & "you usually " & Frame2.Value & ",")
End Sub

Private Sub OptionButton1_Click()

End Sub

Private Sub btmcancel_Click()

End Sub

Private Sub btnok_Click()

End Sub

Private Sub Frame1_Click()

End Sub

Private Sub Frame2_Click()

End Sub

Private Sub optbaseball_Click()

End Sub

Private Sub optbasketball_Click()

End Sub

Private Sub optfootball_Click()

End Sub

非常感谢!!!

2 个答案:

答案 0 :(得分:3)

这里有一些事情:

  1. 您应该将按钮命名为“OkButton”和“CancelButton”或类似的东西。它们以后会更容易追踪。你的收音机按钮(棒球,篮球等)也是如此。
  2. 您不需要您的select语句或if语句
  3. 我认为Frame1和Frame2没有你可以调用的.Value属性

  4. 以下是一些示例代码。您可以在工作表中添加一个可以单击的对象。在这个例子中,我刚刚插入了一个矩形对象。形成“插入”选项卡。然后在UserForm代码中,我将Ok Button重命名为OkButton并添加了函数OkButton_click。单击它时,我捕获单选按钮的值。我相应地将他们命名为棒球,篮球和足球以及观看和离开。如果其中一个是真的,那么我分配“游戏”,这是我声称是游戏的合适标题的字符串。无论这个人是喜欢去看比赛还是看比赛,我都做了同样的事情。然后我添加了CancelButton_Click函数来关闭userForm。

    Private Sub Rectangle1_Click()
       UserForm1.Show
    End Sub
    
    Private Sub OkButton_Click()
        Dim game as String, watchOrGo as String
        If baseball Then game = "baseball"
        If basketball Then game = "basketball"
        If football Then game = "football"
    
        If watch Then watchOrGo = "watch"
        If go then watchOrGo = "go"
    
        okbtn = Msg("Your favorite sport is " & game & ". You usually " & watchOrGo)
     End Sub
    
     Private Sub CancelButton_Click()
        cnclbtn = Msg("Sorry you don't want to play")
        Unload Me
     End Sub
    

答案 1 :(得分:0)

如果您希望在单击“确定”时运行commandbuttons_Click()中的代码,则需要将其放在“确定”按钮的单击处理程序中:btnok_Click();同样适用于CommandButton2_CLick()btncancel_Click()