子例程中的引用复选框名称/值

时间:2016-06-01 16:09:58

标签: vba checkbox userform subroutine

有没有办法从用户表单中传递复选框值?当工作表上有复选框时,我已经看到它已完成,但是当我的用户表单出现时,我还无法让它工作。

我有几个重复的if语句,它们之间的唯一区别是复选框的名称。我确定有一个简单的解决方案,我还没有找到。任何帮助表示赞赏。

编辑:包含代码

If LockboxCheckBox.Value = True Then
    If IsEmpty(wsInput.Cells(emptyRow, productCol)) Then
        wsInput.Cells(emptyRow, productCol).Value = LockboxCheckBox.Caption
    Else: wsInput.Cells(emptyRow, productCol).Value = wsInput.Cells(emptyRow, productCol).Value & ", " & LockboxCheckBox.Caption
    End If
End If

我想把它变成一个小子程序,当我调用它时需要传递checkbox.value以及checkbox.caption。

1 个答案:

答案 0 :(得分:0)

以下代码示例演示如何将UserForm上的Checkbox控件传递给另一个过程,获取复选框的值和标题,并对它们执行某些操作。

请注意,我选择将复选框而不是值和标题作为两个参数传递,因为这会减少您需要输入的代码量。

Private Sub btnOK_Click()
    Dim chk As MSForms.CheckBox
    Set chk = Me.CheckBox1
    ProcessCheckBox chk
    ProcessCheckBox Me.CheckBox2
End Sub

Sub ProcessCheckBox(chk As MSForms.CheckBox)
    Dim chkVal As Boolean
    Dim chkCap As String

    chkVal = chk.value
    chkCap = chk.Caption
    If chkVal = True Then
        Debug.Print chkCap & " is true"
    Else
        Debug.Print chkCap & " is false"
    End If
End Sub