有人可以暗示我在这里可能做错了什么吗?现在我正在有效地尝试执行 Ctrl-A 命令来对 vba 中的数据 block 进行全选。然后我希望将该选择保存为一个范围,以便稍后使用它。
Dim rngAdData As Range
.....
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Set rngAdData = Selection
Range(rngAdData).AdvancedFilter Action:=xlFilterInPla.... //<----
最后一行给了我一个运行时错误'1004':对象'Global'的方法'Range'失败
当我按照以下方式执行时,它会起作用
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).AdvancedFilter Action:=xlFilterInPla....
但是这样做很麻烦,因为我需要在这里再次使用该范围
With ActiveWorkbook.Worksheets("....").Sort
.SetRange Range(Selection) //<---
所指向的行给了我同样的错误。
最佳答案
Range(rngAdData)
正在将一个范围提供给一个范围。只需使用rngAdData.AdvancedFilter
你的第二个问题也是同样的想法。请改用此语法。
With ActiveWorkbook.Worksheets("....").Sort
.SetRange Selection
话虽如此,您应该使用除使用 Select
或 Selection
语句之外的其他方法来获取所需的范围。像这样的东西应该效果更好
Dim rngAdData As Range
Dim sht As Worksheet, bottomMostRow As Long, rightMostColumn As Long
Set sht = ActiveSheet
With sht
bottomMostRow = .Cells(1, 1).End(xlDown).Row
rightMostColumn = .Cells(1, 1).End(xlToRight).Column
Set rngAdData = .Range(.Cells(1, 1), .Cells(bottomMostRow, rightMostColumn))
End With
关于excel - 将选择设置为范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15140786/