将选项按钮状态捕获到布尔变量

时间:2016-03-15 04:27:24

标签: vba ms-word

我在用户表单上有三组选项按钮,我想将每个组的状态捕获到一个布尔变量。例如,名为“Process Subfolders”的框架包含两个opt。名为“OptBTN_Subfoldes_yes”和“OptBTN_Subfoldes_no”的按钮在下图中以红色标记。

enter image description here

我编写了一个代码,将组状态分配给名为“SubFolderStatus”的变量。 在表单激活事件和opt时重复相同的代码。按钮更改事件,我的问题是:是否有更清晰,更有效的代码来获得相同的结果? 这是我的代码

Private Sub OptBTN_Subfoldes_no_Change()
    Select Case OptBTN_Subfoldes_no.Value
    Case True
        SubFolderStatus = False
    Case False
        SubFolderStatus = True
    End Select
End Sub

Private Sub OptBTN_Subfoldes_yes_Change()
    Select Case OptBTN_Subfoldes_yes.Value
    Case True
        SubFolderStatus = True
    Case False
        SubFolderStatus = False
    End Select
End Sub

表单激活事件:

Private Sub UserForm_Activate()
    Select Case OptBTN_Subfoldes_yes.Value
    Case True
        SubFolderStatus = True
    Case False
        SubFolderStatus = False
    End Select
End Sub

2 个答案:

答案 0 :(得分:1)

您可以定义要从所有事件处理程序调用的公共函数

Public Function SetSubFolderStatus(OptBtnVal as boolean, boolSwitch as boolean) as boolean

    SetSubFolderStatus = not (boolSwitch XOr OptBtnVal)

    End Function 

呼叫就像

Private Sub UserForm_Activate()
SubFolderStatus = SetSubFolderStatus(OptBTN_Subfoldes_yes.value, True) 
End Sub

答案 1 :(得分:1)

而不是使用Case,只需将SetFolderStatus分配给是Value的{​​{1}},然后将其放入Option Button / {{1 Sub以及Initialize

默认情况下,您可以使用属性将“是”按钮值设置为True。

为了您的使用,您可以删除Activate,因为它只是为了测试目的而显示。

因此,每个代码中只有一行代码与OptBTN_Subfoldes_yes_Change选择相对。

见下面的例子

Me.Label1.Caption = ButtonValue

enter image description here