如何将范围值变成双精度值 (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 的上述版本似乎确实有效!
所以我想创建一个函数,它在单元格中获取一个值来进行一些计算,但是每当我尝试从单元格中获取值而不是硬编码时,我都会得到一个 # 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 的上述版本似乎确实有效!