如何强制用户选择一个选项,使用框架,excel userform

时间:2014-07-11 12:08:27

标签: excel excel-vba userform vba

enter image description here我的用户表格上有4个框架。

第1,2和4帧有两个选项按钮。 第3帧有5个选项按钮。

我想要做的是,当选择命令按钮时,如果未选择框架中的选项按钮,则会显示一条消息。

我希望每个框架都有自定义消息。

我已经开始了,但真的很难掌握不同的框架...有人能指出我正确的方向吗? (还是非常初学者并且正在努力学习,所以如果所有的回复都让人沮丧,那就太棒了!!:D)

(我已从示例中提取此代码,因此它可能不是解决我问题的最佳方法...)

Dim ThisControl As Control

For Each ThisControl In UserForm2.Frame1.Controls

If TypeName(ThisControl) = "OptionButton" And _
ThisControl.Value = True Then
Unload Me
End If

Next ThisControl
MsgBox "Please Select an Option", vbCritical, "Select Opton"

2 个答案:

答案 0 :(得分:3)

尝试以下方法:

If Me.[ControlName].Value = False And Me.[ControlName].Value = False Then
    MsgBox "[Message]", vbExclamation, "[Message Box Name]"
    Exit Sub
End If

对每个帧执行相同操作,将[ControlName]替换为控件名称,并将[Message]和[Message Box Name]替换为所需的自定义消息。 对于第3帧,您需要包含额外的3个“和”语句。

答案 1 :(得分:3)

可能不是最合适的解决方案,但它运作正常。循环遍历每个帧(您需要更新帧名称以匹配您的[名称,而不是标题!]),然后确保至少设置了一个选项,否则显示一条消息。根据需要进行调整

Private Sub CommandButton1_Click()       


For Each ctrl In Frame1.Controls

   If TypeOf ctrl Is msforms.OptionButton Then

       If ctrl.Value = True Then
             F1D = True
             Exit For
             End If
       End If
   Next ctrl

If F1D = False Then
MsgBox "No Option Selected In Frame 1"
End If

For Each ctrl In Frame2.Controls

   If TypeOf ctrl Is msforms.OptionButton Then

       If ctrl.Value = True Then
             F2D = True
             Exit For
             End If
       End If
   Next ctrl

If F2D = False Then
MsgBox "No Option Selected In Frame 2"
End If

For Each ctrl In Frame3.Controls

   If TypeOf ctrl Is msforms.OptionButton Then

       If ctrl.Value = True Then
             F3D = True
             Exit For
             End If
       End If
   Next ctrl

If F3D = False Then
MsgBox "No Option Selected In Frame 3"
End If

For Each ctrl In Frame4.Controls

   If TypeOf ctrl Is msforms.OptionButton Then

       If ctrl.Value = True Then
             F4D = True
             Exit For
             End If
       End If
   Next ctrl

If F4D = False Then
MsgBox "No Option Selected In Frame 4"
End If

End Sub

enter image description here