在这个特定的代码中,我试图测试double是否满足某个条件。通过将记录集(应该是字符串)的输入转换为double来生成此double。
以下是有问题的代码:
Do Until SampleTable.EOF
If (isCancer(convertValuetoNumeric(SampleTable![Value]))) Then
'Some stuff done here
'...
End If
我的convertValuetoNumeric方法突出显示“编译错误:类型不匹配”错误。现在输入是高度规范化的,所以我知道传递给convert方法的任何字符串都将返回double。我相信错误来自传递给convertValuetoNumeric的参数已经是一个double或者因为从表中调用数据返回RecordSet对象而不是我期望的String。
以下是转换代码:
Function convertValuetoNumeric(ICD As String) As Double
If IsNumeric(ICD) Then
convertValuetoNumeric = CDbl(ICD)
Else
convertValuetoNumeric = CDbl(Replace(ICD, "V", "99")) 'Replace V with 99 and convert
End If
End Function
输入可以是双倍(例如1000.5),也可以是前面带有V的双倍(例如V100000.5)。该程序要么将变量返回为double,要么将其返回为前面的99。没有输入会破坏这两种情况。
编辑:即使更改convertValuetoNumeric()的方法签名以接受Variant
类型的变量而不是String
,也无法解决错误。
答案 0 :(得分:0)
为什么不使用在VBA和VBScript中都有效的Variant ICD:
Function convertValuetoNumeric(ByVal ICD) As Double
If IsNumeric(ICD) Then
convertValuetoNumeric = CDbl(ICD)
Else
convertValuetoNumeric = CDbl(Replace(ICD, "V", "99")) 'Replace V with 99 and convert
End If
End Function
在电话中:
Do Until SampleTable.EOF
If (isCancer(convertValuetoNumeric(SampleTable![Value].Value))) Then
'Some stuff done here
'...
End If
....
我认为[Value]是列名。