【发布时间】: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