Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将范围值转换为双精度值(VBA)_Vba_Excel_Excel 2013 - Fatal编程技术网

如何将范围值转换为双精度值(VBA)

如何将范围值转换为双精度值(VBA),vba,excel,excel-2013,Vba,Excel,Excel 2013,所以我想做一个函数,在单元格中取一个值来进行一些计算,但是每当我试图从单元格中获取值而不是硬编码时,我就会得到一个#值运行函数时出错。然而,当值被硬编码时,这并没有发生 我认为这是因为Range.Value返回一个变量,但我不知道如何将数据转换为double以便函数正常工作 Function IfMissionarySupplies(Missionary_Type As String) As Double Wb = ThisWorkbook 'Wb is a global variable. D

所以我想做一个函数,在单元格中取一个值来进行一些计算,但是每当我试图从单元格中获取值而不是硬编码时,我就会得到一个#值运行函数时出错。然而,当值被硬编码时,这并没有发生

我认为这是因为Range.Value返回一个变量,但我不知道如何将数据转换为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版本看起来确实有效

Elder_Supplies隐式键入为变量。改为使用Dim Elder_Supplies作为Double。这是一个Double,因为Elder_Supplies和Sister_Supplies都声明为Double,请检查第三行。这些范围中的值是什么,在UDF中没有定义C11和C14Missional_Type。它们是数字,但格式为货币,但我不知道这是否有区别。