Есть цикл, который идет по ячейкам вниз и каждую сравнивает, допустим, с нулем. Периодически может встречаться Error 2029, тк в ячеках попадается текст типа =D it is so funny - то есть смайлики со знаком равенства. Когда макрос натыкается на подобное, он прекращает свою работу с ошибкой.
Каким образом можно форсированно преобразовать такие ячейки в текст, например путем конкатенации, то есть тупо добавив в начало ячейки точку или любой другой простой символ?
Дебагер через Watch видит значение такой ячейки как Error 2029 (без кавычек), то есть я не могу сделать сравнение вида: [vba]
Код
If Cells(i, 1) = "Error 2029" Then
[/vba]
Есть цикл, который идет по ячейкам вниз и каждую сравнивает, допустим, с нулем. Периодически может встречаться Error 2029, тк в ячеках попадается текст типа =D it is so funny - то есть смайлики со знаком равенства. Когда макрос натыкается на подобное, он прекращает свою работу с ошибкой.
Каким образом можно форсированно преобразовать такие ячейки в текст, например путем конкатенации, то есть тупо добавив в начало ячейки точку или любой другой простой символ?
Дебагер через Watch видит значение такой ячейки как Error 2029 (без кавычек), то есть я не могу сделать сравнение вида: [vba]
1 Лист) В первой же ячейке ошибочное значение, попытка исправить его таким макросом выдает ошибку: [vba]
Код
Sub Example_01() If IsError(Cells(1, 1)) Then Cells(1, 1) = "." + Cells(1, 1) End If End Sub
[/vba]
2 и 3 Листы) То же самое, но исправление с помощью Replace-макроса(под каждый лист свой макрос): [vba]
Код
Sub Example_02() Worksheets("Лист2").Columns("A").Replace _ What:="=", Replacement:="`=", _ SearchOrder:=xlByRows, MatchCase:=True End Sub
[/vba] Через каждые 50 строк идет ошибочное значение Обратите внимание на 150 и 200 значения во 2 Листе, исправляются только значения до 200 строки, дальше замена не проходит. В 3 Листе исправляются все, даже значение на 300 строке.
Извиняюсь. Вот файл-пример.
1 Лист) В первой же ячейке ошибочное значение, попытка исправить его таким макросом выдает ошибку: [vba]
Код
Sub Example_01() If IsError(Cells(1, 1)) Then Cells(1, 1) = "." + Cells(1, 1) End If End Sub
[/vba]
2 и 3 Листы) То же самое, но исправление с помощью Replace-макроса(под каждый лист свой макрос): [vba]
Код
Sub Example_02() Worksheets("Лист2").Columns("A").Replace _ What:="=", Replacement:="`=", _ SearchOrder:=xlByRows, MatchCase:=True End Sub
[/vba] Через каждые 50 строк идет ошибочное значение Обратите внимание на 150 и 200 значения во 2 Листе, исправляются только значения до 200 строки, дальше замена не проходит. В 3 Листе исправляются все, даже значение на 300 строке.Kokkolar