在子例程中引用复选框 name/value

Reference checkbox name/value in a 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 传递给它。

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

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

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