有人可以暗示我在这里可能做错了什么吗?现在我正在有效地尝试执行 Ctrl-A 命令来对 vba 中的数据块进行全选。然后我希望将该选择保存为一个范围,以便稍后使用。
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.... //<----
最后一行给了我一个run-time error '1004': Method 'Range' of object 'Global' failed
当我按照以下方式执行时,它会起作用
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
or 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)