VBA - 范围对象的偏移量(命名引用)
Posted
技术标签:
【中文标题】VBA - 范围对象的偏移量(命名引用)【英文标题】:VBA - Offset of Range Object (a named reference) 【发布时间】:2020-06-23 07:06:09 【问题描述】:我对 VBA 比较陌生,我发现理解 MS VBA 文档非常困难。
我正在编写一个宏来对财务模型执行一些场景测试。我有一个名为 Notional Tenor(整数值)的命名引用,我想检索右侧单元格的值(3 + J(先前定义的整数值))。
Dim Notional_Tenor As Range, Value As Integer
Set Notional_Tenor = Sheets("Scenario & Inputs").Range("Notional_Tenor")
Value = Notional_Tenor.Offset(0, 3 + J).Value2
Debug.Print Value
我的 Debug.Print 语句在我的即时框中没有显示任何内容(值应该等于 18)。是我的代码吗?
非常感谢任何帮助!谢谢
【问题讨论】:
J
是否已定义和设置?
用调试器检查Range变量Notional_Tenor
的地址:它是否指向预期的地址(你可以使用Debug.Print Notional_Tenor.address
)。检查变量J
的内容:是否有预期值?
当工作表“Scenario & Inputs”处于活动状态时,尝试添加 Notional_Tenor.Offset(0, 3 + J).select
,在 vba 编辑器中逐步运行 (F8),然后查看所选单元格是否正确(值为 18)。
@MG92 是的,它已定义并设置
@FunThomas 是的,这很有帮助,谢谢
【参考方案1】:
如果“Notional_Tenor”范围不是单个单元格(例如,3 个单元格 x 5 个单元格的范围),则此偏移量将无法正常工作,因为它无法为多个单元格返回值。 如果是单数单元格,直接引用即可。 如果您正在搜索范围以查找参考单元格,则可以通过以下方式实现:
Dim j As Integer
Dim foundRange As Range
Dim searchFor as string
Dim Notional_Tenor As Range
Dim Value As Integer
j = 1
searchFor = "some value"
Set Notional_Tenor = Sheets("Scenario & Inputs").Range("Notional_Tenor")
Set foundRange = Notional_Tenor.Find(What:=searchFor, LookIn:=xlValues, LookAt:=xlWhole)
Value = foundRange.Offset(0, 3 + j).Value
MsgBox Value
【讨论】:
以上是关于VBA - 范围对象的偏移量(命名引用)的主要内容,如果未能解决你的问题,请参考以下文章
Internet Explorer TextRange 中的字符偏移