【问题标题】:Use userform with Checkboxes to create an array in a single cell VBA使用带有复选框的用户窗体在单个单元格 VBA 中创建数组
【发布时间】:2021-09-11 20:47:20
【问题描述】:

我尝试在用户窗体中使用复选框在单个单元格中创建一个数组,然后使用该单元格过滤一个以数组作为 Creteria 的表。如果将一个值输入到单元格中,我的代码就可以工作,但是一旦单元格中有多个值,过滤器就不起作用。我需要一些帮助。

这是我用来将值输入到我的 TestSettings 工作簿中的单元格 A2 的代码:

Private Sub SubmitSettings_Click()

'DECLARE VARIABLES
Dim contr As Control
Dim arrType As String


'ACTIVATE SETTINGS WORKSHEET AND FIND FIRST CELL IN COLUMN A
Workbooks("TestSettings.xlsm").Activate

'LOOP THROUGH CHECKBOXES
For Each contr In SettingsForm.Controls

    'CHECKS IF CONTROL TYPE IS A CHECKBOXS
    If TypeName(contr) = "CheckBox" Then
        
        'CHECKS IF VALUE IS TRUE
        If contr.Value = True Then
            
            'COMBINE VALUES INTO SINGLE STRING SEPERATED BY ,
            If arrType = "" Then
                arrType = contr.Caption
            Else
                arrType = arrType & "," & contr.Caption
            End If
            
        Else
            Debug.Print "False"
        End If
        
    End If
    
Next contr
 
ActiveSheet.Range("A2").Value = Array(arrType)

End Sub

这是我用来过滤要在我的 TestProject 工作簿中过滤的表的代码:

Sub FilterTypes()
    'DECLARE VARIABLES
    Dim arType As Variant
    
    'ACTIVATE SETTINGS WORKBOOK
    Workbooks("TestSettings.xlsm").Activate
    
    'SET VALUES
    arType = ActiveSheet.Range("A2").Value
    
    'ACTIVATE TESTPROJECT WORKBOOK
    Workbooks("TestProject.xlsm").Sheets("Project").Activate
    
    'FILTER BY TYPE
    ActiveSheet.ListObjects("ProjectTestTable1").Range.AutoFilter Field:=1, _
        Criteria1:=Array(arType), Operator:=xlFilterValues
End Sub

如果单元格 A2 = A 过滤器有效 如果单元格 A2 = A,B 过滤器不起作用。

【问题讨论】:

    标签: arrays excel vba loops filter


    【解决方案1】:

    试试:

    ActiveSheet.ListObjects("ProjectTestTable1").Range.AutoFilter Field:=1, _
            Criteria1:=Split(arType,","), Operator:=xlFilterValues
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-09
      • 2015-01-17
      • 2013-02-26
      • 1970-01-01
      • 2015-05-07
      • 1970-01-01
      相关资源
      最近更新 更多