ARi*_*ich 3 excel vba excel-vba excel-2010
编辑:要解决这个问题,我换Dim Placed As Range到As Long.然后我改变了
Set Placed = Rows("3:3").Find("Placed", Range("A3"), searchdirection:=xlToRight)
Run Code Online (Sandbox Code Playgroud)
至
Placed = Rows("3:3").Find("Placed", Range("A3"), searchdirection:=xlToRight).Column
Run Code Online (Sandbox Code Playgroud)
代码现在运行得很好.结束编辑
好的,我已经在这个问题上工作了近两个小时了.
我正在尝试在工作表上编写几个选项按钮来根据需要过滤数据.
首先,我记录了自己过滤数据给我一个起点.这是录音机吐出的内容:
ActiveSheet.Range("$A$3:$CS$212").AutoFilter Field:=53, Criteria1:=Array( _
"Iteration 1", "Iteration 2", "Iteration 3", "Tradeshow", "="), Operator:= _
xlFilterValues
Run Code Online (Sandbox Code Playgroud)
为了使选项按钮更加健壮,我决定使用变量,以防添加了列或行,或者添加了标准.
我加了一个可变的Range(),Field:=以及Criteria1:=,但我的代码现在抛出这个错误:Run-time error '1004': Autofilter Method of Range class failed.
我想知道我是否使用Array不当......?无论如何,这是我的声明:
Const Opt1 As String = "Iteration 1"
Const Opt2 As String = "Iteration 2"
Const Opt3 As String = "Iteration 3"
Const Opt4 As String = "Iteration 4"
Const Opt5 As String = "Tradeshow"
Const Opt6 As String = "Placed"
Dim Placed As Range 'This is the Field var.
Dim lastRow, lastColumn As Long 'Holds the last row and column numbers.
Dim Rng1, Rng2 As Range 'These hold the beginning and ending ranges for the filter
Run Code Online (Sandbox Code Playgroud)
以下是我设置变量的方法:
lastRow = Range("A:A").Find("*", Range("A1"), searchdirection:=xlPrevious).Row
lastColumn = Cells(3, Columns.Count).End(xlToLeft).Column
Set Placed = Rows("3:3").Find("Placed", Range("A3"), searchdirection:=xlToRight)
Set Rng1 = Cells(3, 1)
Set Rng2 = Cells(lastRow, lastColumn)
Run Code Online (Sandbox Code Playgroud)
最后,这是AutoFilter代码:
ActiveSheet.Range(Rng1, Rng2).AutoFilter Field:=Placed, Criteria1:=Array(Opt1, Opt2, Opt3, Opt4, Opt5, Opt6, "="), Operator:=xlFilterValues
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么它会抛出那个错误?它与它有关Array吗?任何帮助都感激不尽!
tig*_*tar 11
不,这是Field:=参数的问题.您已将其设置为"已放置",并且已将"放置"变量分配给单元格.它必须是列号.例如,如果Placed列是D列而您的数据从A列开始,则Field应为4,因为它是第四列.如果放置的列是最后一列,则可以将Field设置为等于lastColumn变量:
ActiveSheet.Range(Rng1, Rng2).AutoFilter Field:=lastColumn, Criteria1:=Array(Opt1, Opt2, Opt3, Opt4, Opt5, Opt6, "="), Operator:=xlFilterValues
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50481 次 |
| 最近记录: |