【问题标题】:VBA - Offset of Range Object (a named reference)VBA - 范围对象的偏移量(命名引用)
【发布时间】: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 是的,这很有帮助,谢谢

标签: excel vba


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 2018-10-01
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多