【发布时间】:2019-11-09 13:30:50
【问题描述】:
我是 VBA 新手,我正在尝试设置一个可自定义的工作表,允许用户根据我设置的复选框过滤某些列。到目前为止,我了解复选框的工作原理以及如何将它们集成到代码中,但我认为我的自动筛选功能存在问题。具体来说,我认为我为 Criteria1 设置了错误的值。
我一直在寻找类似的编码问题,但它们似乎都不适用于我正在尝试做的事情。
TL;DR 我认为我的问题在于如何格式化数组以放入 AutoFilter() 的 Criteria1
Sub Auto_filter()
'variables are for checkboxes'
Dim VC1500 As Shape
Dim VC7500 As Shape
Dim VC144024 As Shape
'initiates to check for the checkboxes'
Set VC1500 = Sheets("Sheet7").Shapes("Check Box 4")
Set VC7500 = Sheets("Sheet7").Shapes("Check Box 5")
Set VC144024 = Sheets("Sheet7").Shapes("Check Box 6")
'if statement that will add a string to strCriteria if checkbox is true'
If VC1500.OLEFormat.Object.Value = 1 Then
strCriteria = strCriteria & ", VC1500"
End If
If VC7500.OLEFormat.Object.Value = 1 Then
strCriteria = strCriteria & ", VC7500"
End If
If VC144024.OLEFormat.Object.Value = 1 Then
strCriteria = strCriteria & ", 144024"
End If
'with statement that finds for column vendor then filter it based on
strCriteria, I think this is where my issue is'
With Worksheets("Open Purchase Orders")
With .Range("A1", .Cells(1, Columns.Count).End(xlToLeft))
Set vendorfind = .Rows(1).Find("Vendor")
If Not vendorfind Is Nothing Then
.AutoFilter Field:=vendorfind.Column,
Criteria1:=Split(strCriteria, ", "), Operator:=xlFilterValues
End If
End With
.AutoFilterMode = False
End With
End Sub
我希望根据复选框过滤工作表。 我收到运行时错误 9 错误:下标超出范围
【问题讨论】:
标签: excel vba checkbox autofilter