2013-08-23 3 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 

Я также пробовал очистить Err после вышеуказанного кода без каких-либо успехов.

Пожалуйста, помогите!

ответ

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 даст вам 0 для «LS».

Вы можете попробовать функции TryParse - но не уверен, что если его доступна в вашей версии VBA

+0

Проблема с этим 'Val («43L») 'возвращает число 43. Вместо этого я бы использовал функцию IsNumeric. –

+1

Да, это право - намного лучший вариант, и исключить заявления GOTO. – Grantly

Смежные вопросы