我在引用 VBA 中的动态名称范围时遇到麻烦。
我的范围定义为
=OFFSET(Sheet!$B$2,0,0,COUNTA(Sheet!$B:$B)-1,1)
我的代码应该在一个范围中搜索另一范围中的所有条目,目的是添加任何缺失的条目。到目前为止我已经
Sub UpdateSummary() Dim Cell As Range Dim rngF As Range Set rngF = Nothing ' Step through each cell in data range For Each Cell In Worksheets("Aspect").Range("A_Date") ' search Summary range for current cell value Set rngF = Worksheets("Summary").Range("Sum_Date").Find(Cell.Value) // Does not work If rngF Is Nothing Then ' Add date to Summary End If Set rngF = Nothing Next Cell End Sub
For 循环似乎工作正常。但是,使用 .Find 方法给我一条错误消息。
Application-defined or object-defined error
如果我用特定范围($B$2:$B$5000)替换命名范围,它确实有效,所以它似乎取决于命名范围的传递方式。
任何想法将不胜感激。
谢谢。
最佳答案
该错误几乎肯定是因为 Excel 找不到引用名为“摘要”的工作表上的范围的命名范围 Sum_Date。最常见的原因是
- Sum_Date 指除“摘要”之外的工作表。检查 Sum_Date 的 RefersTo 属性并确保没有拼写错误。
- 没有命名范围 Sum_Date,即 VBA 代码中拼写错误。在名称管理器中检查命名范围的拼写。
- Sum_Date 的 RefersTo 公式存在错误。听起来您已经证实情况并非如此。
关于vba - 在 VBA 中引用动态命名范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11868739/