Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何在VBA公式中引用对象变量?_Excel_Vba - Fatal编程技术网

Excel 如何在VBA公式中引用对象变量?

Excel 如何在VBA公式中引用对象变量?,excel,vba,Excel,Vba,我有一个sub,它获取用户输入的两个日期,作为定义为DateRange的范围的下限和上限。我想找到2个日期的单元格地址,将单元格引用增加1行,并使用它来计算位于找到的2个日期之下的所有对应值的总和 我对对象变量操作没有太多经验。以下是我遇到的问题: 将L\u范围和R\u范围增加1行 在求和公式中使用L\u Found和R\u Found Sub-custominterval() '用户输入 Dim L_绑定为日期 Dim R_绑定为日期 '包含为L_绑定和R_绑定找到的单元格引用 找到作为范围的

我有一个sub,它获取用户输入的两个日期,作为定义为
DateRange
的范围的下限和上限。我想找到2个日期的单元格地址,将单元格引用增加1行,并使用它来计算位于找到的2个日期之下的所有对应值的总和

我对对象变量操作没有太多经验。以下是我遇到的问题:

  • L\u范围
    R\u范围
    增加1行
  • 在求和公式中使用
    L\u Found
    R\u Found
  • Sub-custominterval()
    '用户输入
    Dim L_绑定为日期
    Dim R_绑定为日期
    '包含为L_绑定和R_绑定找到的单元格引用
    找到作为范围的Dim L_
    找到的变暗R_为范围
    '定义要搜索的范围
    日期范围变暗为范围
    设置日期范围=范围(“H8”,范围(“H8”)。结束(xlToRight))
    L_Bound=InputBox(“输入下限日期(mm/dd/yyyy)”,“自定义日期”)
    R_Bound=InputBox(“输入上限日期(mm/dd/yyyy)”,“自定义日期”)
    范围(“H8”,范围(“H8”).End(xlToRight)).NumberFormat=“d-mmm”
    Set L_Found=DateRange.Find(L_绑定)
    Set R\u Found=DateRange.Find(R\u绑定)
    设置L_Found=L_Found.Offset(1,0)
    设置R_Found=R_Found.Offset(1,0)
    Range(“E9”).Formula=“=sum(&L_Found.Address&“:”&R_Found.Address&“)
    范围(“E9”)。选择
    ActiveCell.AutoFill目标:=范围(“E9:E15”)
    端接头
    
    您需要一个看起来像单元格范围引用的字符串。这可以通过Address属性生成

    您还需要偏移生成该地址的范围。在检索地址之前使用Offset函数

    Range("E9").forumla = _
      "=sum(" & Range(L_Found, R_Found).Offset(1, 0).Address(0, 0) & ")"
    

    您可能需要类似于
    L\u Found.Offset(1)的内容。公式=“=sum”(&L\u Found.address&:“&R\u Found.address&”)
    偏移量是L\u Found下面的单元格。我可以确认.address函数修复了在公式中调用变量的问题。但是,我仍然无法增加找到的单元格。由于单元格(L_Found和R_Found)存储为范围变量,因此offset命令不起作用。我实际上是在尝试先递增并重新分配范围变量,然后再在我的求和公式中引用它。当我使用offset时,它实际上增加单元格本身的值,而不是单元格地址。不,
    Find
    返回一个
    范围
    对象,
    offset
    是它的属性之一<代码>范围(“A1”)。偏移量(1)是
    范围(“A2”)
    ,在下面的单元格中,它不会向值中添加1。是的,我的错误。我对obj没有多少经验。变量。这是我现在拥有的。我觉得这应该行得通,但是不行。L_Found=L_Found.Offset(1,0)R_Found=R_Found.Offset(1,0)Range(“E9”)。forumla=“=sum”(&L_Found.Address&“:”&R_Found.Address&“)在分配对象变量时必须始终使用
    Set
    。我刚刚尝试了这个解决方案。VB编辑器给了我一个运行时错误1004-对象\u Global的方法“Range”失败错误。