Sub TextToNum()
Dim af As Double
For Each x In Selection
On Error GoTo 10
af = x.Value 'here appears error
x.NumberFormat = Number
On Error GoTo -1
x.Value = af
10 Next x
End Sub
Если значение ячейки невозможно преобразовать в число (буквы, символы), появляется сообщение об ошибке и выполнение макроса прекращается. Передать эту ошибку через «При ошибке» не удается — сообщение об ошибке появляется в любом случае. Как это решить?
Выполните это с помощью отладчика. Я считаю, что ваш код правильно обработает первое, но не второе.
Вы можете использовать IsNumeric
вместо проверки ошибок:
Sub TextToNum()
Dim af As Double
Dim x As Range
For Each x In Selection
If IsNumeric(x.Value) Then
af = x.Value
x.NumberFormat = Number
x.Value = af
End If
Next x
End Sub
спасибо, я действительно забыл об этой функции с IsNumeric, уловил важный момент :)
Этот вопрос похож на: Обработка ошибок работает только один раз. Если вы считаете, что это другое, отредактируйте вопрос, поясните, чем он отличается и/или как ответы на этот вопрос не помогают решить вашу проблему.