在这个特定的代码中,我试图测试一个 double 是否满足某个条件。这个双精度是通过将记录集(应该是一个字符串)中的输入转换为双精度来生成的。
以下是有问题的代码:
Do Until SampleTable.EOF
If (isCancer(convertValuetoNumeric(SampleTable![Value]))) Then
'Some stuff done here
'...
End If
我的 convertValuetoNumeric 方法突出显示时出现“编译错误:类型不匹配”错误。现在输入是高度标准化的,所以我知道传递给 convert 方法的任何字符串都将以双精度返回。我相信错误是因为传递给 convertValuetoNumeric 的参数已经是双精度,或者是因为从表中调用数据返回的是 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)。程序要么将变量返回为未更改的双精度变量,要么返回前面带有 99 的双精度变量。没有任何输入会破坏这两种情况。
编辑:即使更改 convertValuetoNumeric() 的方法签名以接受类型变量Variant
而不是String
修复错误也无济于事。