在VBA中引用动态命名范围

Mic*_*ael 5 excel vba excel-vba excel-2010

我在引用VBA中的动态名称范围时遇到麻烦。
我的范围定义为

    =偏移(Sheet!$ B $ 2,0,0,COUNTA(Sheet!$ B:$ B)-1,1)

我的代码应在一个范围内搜索另一范围内的所有条目,目的是要添加所有缺少的条目。到目前为止,我有

    子UpdateSummary()
    暗单元格范围
    Dim rngF作为范围
    设置rngF = Nothing

    '逐步遍历数据范围内的每个单元格
    对于工作表中的每个单元格(“方面”)。范围(“ A_Date”)
        '搜索当前单元格值的摘要范围
        设置rngF = Worksheets(“ Summary”)。Range(“ Sum_Date”)。Find(Cell.Value)//不起作用
        如果rngF什么都没有,那么
            '在摘要中添加日期
        万一
        设置rngF = Nothing
    下一个单元格
    结束子 

For循环似乎工作正常。但是,使用.Find方法会给我一条错误消息。

    应用程序定义或对象定义的错误

如果我将命名范围替换为特定范围($ B $ 2:$ B $ 5000),它确实起作用,因此似乎取决于命名范围的传递方式。
任何想法,将不胜感激。

谢谢。

Dic*_*ika 5

该错误几乎可以肯定是因为Excel找不到在名为Summary的工作表上引用一个范围的命名范围Sum_Date。最常见的原因是

  1. Sum_Date引用摘要以外的工作表。检查Sum_Date的RefersTo属性,并确保没有拼写错误。
  2. 没有命名范围Sum_Date,即VBA代码中的拼写错误。在名称管理器中检查命名范围的拼写。
  3. Sum_Date的RefersTo公式中有错误。听起来您已经验证了事实并非如此。