我遇到无法解决的问题。我编写了一个程序,该程序使用AdvancedFilters在Excel Form中为组合框创建下拉菜单,以便从下拉菜单中消除重复项(以下是其中一个下拉菜单的示例)。我也在同一Excel表单中使用 AutoFilter 来过滤电子表格。
我编写了此程序,以供具有相同类型不同数据的多个用户使用。所有列在整个工作表中都是一致的,因此我删除了现有的数据行,以便将新的数据行粘贴到工作表上。
问题在于,在删除旧行并粘贴新行之前,筛选工作正常。筛选器将无法识别新的数据行。看来AdvancedFilter功能可以正常工作,但是AutoFilter无法识别新数据。
我在下面提供了代码,但我不知道这将有助于解决问题。似乎程序正在记住旧数据中的过滤器。我曾尝试使用AutoFilterMode = False
和ActiveSheet.ShowAllData
,但是似乎没有什么可以将工作表重置为新工作表。
我愿意接受所有建议。
AdvancedFilter的示例代码:
Sheets("Grant Spreadsheet").Activate
Me.ARRACmboBx.SetFocus 'Set cursor on the ARRACmboBx field
Range("a1:a200").AdvancedFilter Action:=xlFilterCopy,_
CopyToRange:=Worksheets("Lists").Range("j1"), Unique:=True
'Copy Unique Values to List Worksheet for use in Dropdown
Dim List As Worksheet
Set List = Worksheets("Lists")
With List.Range(("j2:j4"),List.UsedRange.Rows(Worksheets("Lists")_
.UsedRange.Rows.Count)).Sort Key1:=List.Range("j2:j4"),_
Order1:=xlAscending, Header:=xlNo, OrderCustom:=1,_
MatchCase:=False, Orientation:=xlTopToBottom,_
DataOption1:=xlSortTextAsNumbers
End With
自动过滤的代码:
With .Range("a1:at1000")
.AutoFilter Field:=1, Criteria1:="*" & Me.ARRACmboBx.Value & "*"
.AutoFilter Field:=2, Criteria1:="*" & Me.PreAwardCmboBx.Value & "*"
.AutoFilter Field:=3, Criteria1:="*" & Me.PICmboBx.Value & "*"
.AutoFilter Field:=4, Criteria1:="*" & Me.ProjTypeCmboBx.Value & "*"
.AutoFilter Field:=5, Criteria1:="*" & Me.GrantNameCmboBx.Value & "*"
.AutoFilter Field:=6, Criteria1:="*" & Me.CompleteCmboBx.Value & "*"
.AutoFilter Field:=7, Criteria1:="*" & Me.OperatingCmboBx.Value & "*"
.AutoFilter Field:=8, Criteria1:="*" & Me.FundNoCmboBx.Value & "*"
.AutoFilter Field:=9, Criteria1:="*" & Me.OrgTxtBx.Value & "*"
.AutoFilter Field:=10, Criteria1:="*" & Me.ProjectTxtBx.Value & "*"
.AutoFilter Field:=11, Criteria1:="*" & Me.AccountTxtBx.Value & "*"
.AutoFilter Field:=14, Criteria1:="*" & Me.GrantAgencyCmboBx.Value & "*"
.AutoFilter Field:=15, Criteria1:="*" & Me.GrantDeptCmboBx.Value & "*"
.AutoFilter Field:=16, Criteria1:="*" & Me.ProgramCmboBx.Value & "*"
.AutoFilter Field:=17, Criteria1:="*" & Me.PassthroughCmboBx.Value & "*"
.AutoFilter Field:=18, Criteria1:="*" & Me.CatalogNoCmboBx.Value & "*"
.AutoFilter Field:=19, Criteria1:="*" & Me.GrantIDCmboBx.Value & "*"
.AutoFilter Field:=20, Criteria1:="*" & Me.FederalCmboBx.Value & "*"
End With