VBA获取具有已知单元地址的值

时间:2015-03-04 02:24:50

标签: vba excel-vba excel-2007 excel

我试图获取包含特定文本的行的值。说流动性覆盖率是B57中可用的文本。我需要C57和D57的值。我已经实现了直到检索保存文本的单元格的地址。

请帮助我进一步发展。

 If fCheckSheet(forecastWorkbook, "Calculator (FX net)") Then
            wsForecast.Activate
        Else
            ErrorStatus = "Source Sheet:Calculator (FX net) not found"
            msgBoxReturn = MsgBox(ErrorStatus & forecastWorkbook.FullName, vbExclamation + vbOKCancel)
     End If

     Set rngRatio = FindRangeOfText(wsForecast, "Liquidity Coverage Ratio")
     'Gets the address of cell having
     RatioAddress = rngRatio.Address

     'The address is $B$57
       '???? how to retreive values for $c$57 and $D$57

我非常感谢stackoverflow用户的反应,他们让我从新手成长到这个级别。谢谢你的耐心等待。

此致

摩尼

1 个答案:

答案 0 :(得分:2)

假设您引用的函数(但未提供支持的代码)将返回Range类型对象(或Nothing),那么您只需使用Offset方法:

If Not rngRatio Is Nothing Then
    With rngRatio
        Debug.Print .Offset(0,1).Address, .Offset(0,1).Value '$C$57
        Debug.Print .Offset(0,2).Address, .Offset(0,2).Value '$D$57
    End With
End If

还有一种鲜为人知的方法来做同样的事情:

If Not rngRatio Is Nothing Then
    With rngRatio
        Debug.Print .Cells(1, 2).Value 
        Debug.Print .Cells(1, 3).Value
    End With
End With

我首选的是第一种方法,因为它是显式的而不是隐式的。这种方法不太清楚,因为并非所有人都直观地知道您可以使用Cells属性引用范围对象的外部,例如:

MsgBox Range("A1").Cells(1, 4).Address ' --> $E$1

MsgBox Range("A1").Cells(4, 2).Address ' --> $B$4