如何使用模块2中的Public Sub在用户窗体上更改控件的值

时间:2019-01-11 02:06:05

标签: excel vba

我正在尝试运行一个sub来根据记录所在单元格的值来更改一系列复选框的值。我在模块中将Sub设为公用,因为它在各种模块中已多次使用用户表单本身中的潜艇。我的代码如下。

Public Sub ExceptionBoxCheck(ControlNameList As Range, BrevCodeList As Range, RecordValueRow As Range, BrevCodeColumn As Integer, AvailCheckBoxes As Integer)
    Dim ControlName As String, i As Integer, CodeCellContent As String
    Dim BrevCode As String

    For i = 0 To AvailCheckBoxes
        BrevCode = BrevCodeList.Offset(i, 0).Value
        CodeCellContent = RecordValueRow.Offset(0, BrevCodeColumn).Value
        ControlName = ControlNameList.Offset(i, 0).Value
        If InStr(CodeCellContent, BrevCode) <> 0 Then
            Me.Controls(ControlName).Value = True
        End If
    Next i
End Sub

上面的子控件应该遍历控件名称列表,并将它们与要检查的当前控件名称进行比较,其中AvailCheckBoxes是要检查的框总数。我遇到的问题是出现“对我的不当使用”运行时错误,我似乎找不到解决此特定问题的任何方法。我唯一能想到的是,存在此问题的原因是该子模块位于Module2中而不是用户窗体中。

1 个答案:

答案 0 :(得分:1)

Me作为变量从窗体的类模块中的调用过程传递给子 ExceptionBoxCheck 。然后,您可以通过分配的变量名称来引用该表单上的所有控件。