excel - 使用单元格的文本作为具有结构化引用的 range() 的参数
问题描述
我想用 vba 执行一个高级过滤器。有问题的步骤是源表的名称(用于高级过滤器)写在一个单元格中,似乎我找不到将它传递给range()
.
这是想法:
F5 单元格包含“DatePlace”,它是应该在高级过滤器中使用的表的名称。通过录制宏,我看到我们可以在 VBA 中使用结构化引用,但是当我尝试从 F5 的值中获取引用时,高级过滤器不再执行。
我收到此错误消息框(从法语翻译):
Execution error '1004':
Error defined by the application or by the object
这是我的尝试之一:
Worksheets("Planning")
.Range(Worksheets("Macro").Range("$F$5").Text & "[[#Headers],[#Data]]")
.AdvancedFilter Action _:=xlFilterCopy,
CriteriaRange:=Worksheets("Planning").Range("E7:F8"),
CopyToRange:=Worksheets("Planning").Range( _"E11:F11"), Unique:=False
我尝试使用.Value
而不是.Text
. 我也尝试用字符串变量传递它。我还尝试在 F5 单元格中编写完整的参考。当我试图获取一个范围变量时,我只是将问题转移到了该变量的启动。
欢迎任何帮助。
编辑 1:这种方式可行,但我必须对结构化引用进行硬编码,而这正是我想要避免的。
Worksheets("Planning")
.Range("DateLieu[[#Headers],[#Data]]")
.AdvancedFilter Action _:=xlFilterCopy,
CriteriaRange:=Range("A6:B7"),
CopyToRange:=Range( _"A10:B10"), Unique:=False
编辑2:它应该没有问题。这是代码现在的样子。
' Variables
Dim rngPlanning As String
' Initiations
rngPlanning = ThisWorkbook.Worksheets("Macro").Range("$F$5").Text & "[[#Headers],[#Data]]"
' Actions
Application.CutCopyMode = False
Debug.Print (rngPlanning)
Worksheets("Planning").Range(rngPlanning).AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Worksheets("Macro").Range("$E$7:$F$8"), _
CopyToRange:=Worksheets("Macro").Range("$E$11:$F$11"), _
Unique:=False
解决方案
推荐阅读
- javascript - 无法从 JSON“未定义”获取数据
- php - 用 substr 提取字符串的最后 8 个字母
- docker - 如何在 Docker 容器中执行多个命令并使 shell 会话保持打开状态?
- vue.js - 在 for 循环中有 vue 组件的问题
- json - Struts 2 json 结果和 xss hack
- apache-spark - py4j.protocol.Py4JJavaError: 调用 o49.csv 时出错
- linux - 比较四舍五入的数字
- javascript - 除非我在重新加载页面后单击页面,否则 Snap Scrolling 不起作用
- arrays - C语言中多维数组的方括号内不允许使用整数常量变量吗?
- git - 如何在 git 中编辑现有的提交