所以我想创建一个在单元格中取值来进行计算的函数,但每当我尝试从单元格中获取值而不是硬编码时,我得到 #VALUE!函数运行时出现strong>错误。然而,当值被硬编码时,这不会发生。
我认为这是因为Range.Value返回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开发人员来说,我可能会忽略一些显而易见的事情。
谢谢!
答案 0 :(得分:0)
我将以下内容放在标准模块中:
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 的上述版本似乎确实有效!