excel - 将选择设置为范围

标签 excel vba

有人可以暗示我在这里可能做错了什么吗?现在我正在有效地尝试执行 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

话虽如此,您应该使用除使用 SelectSelection 语句之外的其他方法来获取所需的范围。像这样的东西应该效果更好

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/

相关文章:

vba - 如何查找和编辑 VBA 变量所引用的命名范围?

在不安装 Java 的情况下将受密码保护的 xlsx 文件读入 R(密码已知)

c++ - 从 Excel VBA 编写并调用 C++ DLL

excel - VBA 昏暗对象错误

vba - 格式化消息框中的文本excel Vba

python - PyQt 从 excel 填充 QTableWidget

delphi - 在 Delphi 5 中自动读取 Excel 并运行 Excel 2007

vba - 根据单元格中定义的名称定义工作簿

excel - VBA防止另一个更改事件触发时触发更改事件

VBA - 确定Activeworkbook是否有密码