如何将范围值变成双精度值 (VBA)

How to turn a range value to a double (VBA)

所以我想创建一个函数,它在单元格中获取一个值来进行一些计算,但是每当我尝试从单元格中获取值而不是硬编码时,我都会得到一个 # VALUE! 函数为 运行 时出错。而当值被硬编码时,这不会发生。

我认为这是因为 Range.Value returns 是一个 Variant,但我不知道如何将数据转换为 double 以便函数正常工作。

Function IfMissionarySupplies(Missionary_Type As String) As Double
Wb = ThisWorkbook 'Wb is a global variable.
Dim Elder_Supplies, Sister_Supplies As Double
Elder_Supplies = Workbooks(Wb).Worksheets("Control Variables").Range("C11").Value
Sister_Supplies = Workbooks(Wb).Worksheets("Control Variables").Range("C14").Value
If Missionary_Type = "Sisters" Then
    IfMissionarySupplies = Sister_Supplies
    Exit Function
ElseIf Missionary_Type = "Elders" Then
    IfMissionarySupplies = Elder_Supplies
End If 
End Function

我在互联网上搜索了一遍又一遍,但无济于事。我也是 VBA 的新手,所以我可能会忽略一些对更有经验的 VBA 开发人员来说显而易见的事情。

谢谢!

我将以下内容放入标准模块中:

Function IfMissionarySupplies(Missionary_Type As String) As Double
    Wb = ThisWorkbook.Name 'Wb is a global variable.
    Dim Elder_Supplies, Sister_Supplies As Double

    Elder_Supplies = Workbooks(Wb).Worksheets("Control Variables").Range("C11").Value
    Sister_Supplies = Workbooks(Wb).Worksheets("Control Variables").Range("C14").Value

    If Missionary_Type = "Sisters" Then
        IfMissionarySupplies = Sister_Supplies
        Exit Function
    ElseIf Missionary_Type = "Elders" Then
        IfMissionarySupplies = Elder_Supplies
    End If
End Function

并按如下方式设置工作表:

所以您的 UDF 的上述版本似乎确实有效!