在這個特定的代碼中,我試圖測試一個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)。該程序會將該變量作爲雙精度型返回,或者以雙精度值作爲前兩個99的返回值。沒有任何投入會破壞這兩種情況。
編輯:即使更改convertValuetoNumeric()的方法簽名接受類型爲Variant
而不是String
類型的變量不會解決該錯誤。
很難猜到沒有看到'convertValuetoNumeric'和輸入值的例子。 –
@TimWilliams我在轉換代碼中爲你添加了 – ahjohnston25
如果convertValuetoNumeric的輸入是一個字符串,那麼它會失敗,因爲它期望一個double ...你可以將inpur參數類型改爲Variant,如果它可以是數字或字符串。 'Msgbox TypeName(SampleTable![Value])'給了你什麼? –