Excel 如何在VBA公式中引用对象变量?
我有一个sub,它获取用户输入的两个日期,作为定义为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_绑定找到的单元格引用 找到作为范围的
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”失败错误。