我正在多个标签下运行以下代码,criteria1
和criteria2
都可以正常工作,但是当我添加crietria3
时会收到错误消息
“找不到命名参数”
基本上,代码的第一部分(在criteria1代码之前)只是对第一个单元格进行简单的数字划分,然后将其转换为百分比。
criteria1
对一列进行排序,并使用下面列出的特定数字提取单元格。 Criteria2
隐藏我不需要的不必要的列。
Criteria3
然后按最大到最小过滤AD1列,这是代码因“找不到命名参数” 错误而中断的地方。
可以帮忙吗?
Sub Macro2()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Range("AD1").Value = "In %"
ws.Range("AD1").Font.Bold = True
With ws.Range("AD2:AD91")
.FormulaR1C1 = "=RC[-2]/R2C28"
.Style = "Percent"
.NumberFormat = "0.0%"
.Font.Bold = True
ws.Range("A1:AD91").AutoFilter Field:=7, Criteria1:=Array("11", "21", "22""23", "31-33", "42", "44-45", "48-49", "51", "52", "53", "54", "55", "56", "61", "62", "71", "72", "81"), Operator:=xlFilterValues, Criteria2:=ws.Range("A:A,I1,F:F,C:E,I:AA").EntireColumn.Hidden = True, Criteria3:=ws.Range("AD1"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= xlSortNormal
End With
Next ws
Application.ScreenUpdating = False
End Sub
答案 0 :(得分:0)
我将您的第一个条件分为一个数组,以在过滤这些值时提高可读性。
这应该遍历工作表,隐藏列(我删除了这个I1
,错字?),按您的Arr1
进行过滤,然后按降序对AD列中的值进行排序。
您还可以通过关闭屏幕更新来结束您的订阅。我不确定这是否是故意的。在此处进行了更新,以在循环开始之前关闭ScreenUpdating
,并在sub的末尾重新启用。
Option Explicit
Sub Macro2()
Dim ws As Worksheet
Dim Arr1
Arr1 = Array("11", "21", "22", "23", "31-33", "42", "44-45", "48-49", "51", "52", "53", "54", "55", "56", "61", "62", "71", "72", "81")
'Application.ScreenUpdating = False
For Each ws In ThisWorkbook.Worksheets
ws.Range("A:A,C:F,I:AA").EntireColumn.Hidden = True
ws.Range("AD1").Value = "In %"
ws.Range("AD1").Font.Bold = True
With ws.Range("AD2:AD91")
.FormulaR1C1 = "=RC[-2]/R2C28"
.Style = "Percent"
.NumberFormat = "0.0%"
.Font.Bold = True
End With
ws.Range("A1:AD91").AutoFilter Field:=7, Criteria1:=Arr1
ws.Range("A1:AD91").Sort Range("AD2"), xlDescending, Header:=xlYes
Next ws
'Application.ScreenUpdating = True
End Sub