2013-08-23 90 views
0

我有一個問題。我的工作簿中的值正在讀入數組中。這些值來自XML列表,因此有時可以是數字或文本,如果它們是文本格式的數字(例如「1」),則需要將它們轉換爲數字格式,因此我將它們乘以1。例如,文本爲「LS」,我試圖使用錯誤處理程序將值保持爲「LS」。VBA錯誤處理多次

我開發了下面的代碼:它工作一次,但下次我使用類似的方法(與'Dummy2')代碼時,它會產生'類型不匹配'錯誤。

On Error GoTo Dummy1 
    For i = 1 To nrows1 - 1 
     If (Worksheets("Import").Cells(i + 1, 26) * 1 = "") Then 
Dummy1: 

      Table1(i, 1) = Worksheets("Import").Cells(i + 1, 26) 
     Else 
      Table1(i, 1) = Worksheets("Import").Cells(i + 1, 26) * 1 
     End If 
    Next 
    On Error GoTo 0 

我也試過在上面的代碼後清除錯誤沒有成功。

請幫忙!

回答

1

可以使用IsNumeric功能:

Sub test3() 
Dim Test As Variant 
Dim i As Long 

For i = 1 To nrows1 - 1 
Test = Worksheets("Import").Cells(i + 1, 26) 
    If IsNumeric(Test) Then 
     Table1(i, 1) = Test * 1 
    Else 
     Table1(i, 1) = Test 
    End If 
Next 
End Sub 
+0

你打賭。歡迎來到SO! –

0

使用VAL(工作表(「導入」)。單元格(i + 1,26))來確定它是否是數字。 「VAL」會給你「LS」0。

你可以嘗試的TryParse功能 - 但在VBA

的版本不若其可確保
+0

的問題,這是'纈氨酸(「43L」) '返回數字43.我會使用'IsNumeric'函數。 –

+1

是的,沒錯 - 更好的選擇,並消除GOTO語句 – Grantly