Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Преобразование ячейки с ошибочной формулой в текст - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Преобразование ячейки с ошибочной формулой в текст (Макросы/Sub)
Преобразование ячейки с ошибочной формулой в текст
Kokkolar Дата: Вторник, 29.07.2014, 06:14 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Есть цикл, который идет по ячейкам вниз и каждую сравнивает, допустим, с нулем. Периодически может встречаться Error 2029, тк в ячеках попадается текст типа =D it is so funny - то есть смайлики со знаком равенства. Когда макрос натыкается на подобное, он прекращает свою работу с ошибкой.

Каким образом можно форсированно преобразовать такие ячейки в текст, например путем конкатенации, то есть тупо добавив в начало ячейки точку или любой другой простой символ?

Дебагер через Watch видит значение такой ячейки как Error 2029 (без кавычек), то есть я не могу сделать сравнение вида: [vba]
Код
If Cells(i, 1) = "Error 2029" Then
[/vba]


Сообщение отредактировал Kokkolar - Вторник, 29.07.2014, 06:17
 
Ответить
СообщениеЕсть цикл, который идет по ячейкам вниз и каждую сравнивает, допустим, с нулем. Периодически может встречаться Error 2029, тк в ячеках попадается текст типа =D it is so funny - то есть смайлики со знаком равенства. Когда макрос натыкается на подобное, он прекращает свою работу с ошибкой.

Каким образом можно форсированно преобразовать такие ячейки в текст, например путем конкатенации, то есть тупо добавив в начало ячейки точку или любой другой простой символ?

Дебагер через Watch видит значение такой ячейки как Error 2029 (без кавычек), то есть я не могу сделать сравнение вида: [vba]
Код
If Cells(i, 1) = "Error 2029" Then
[/vba]

Автор - Kokkolar
Дата добавления - 29.07.2014 в 06:14
Kokkolar Дата: Вторник, 29.07.2014, 07:20 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Для простоты допустим что ошибочная ячейка нам уже известна: (1361,1)
[vba]
Код
    If IsError(Cells(1361, 1)) Then
          Cells(1361, 1) = "." + Cells(1361, 1)
      End If
[/vba]

При попытке конкатенации выдает ошибку:
Run-time error '13':
Type mismatch

[moder]Ща накажу. Читайте Правила форума
 
Ответить
СообщениеДля простоты допустим что ошибочная ячейка нам уже известна: (1361,1)
[vba]
Код
    If IsError(Cells(1361, 1)) Then
          Cells(1361, 1) = "." + Cells(1361, 1)
      End If
[/vba]

При попытке конкатенации выдает ошибку:
Run-time error '13':
Type mismatch

[moder]Ща накажу. Читайте Правила форума

Автор - Kokkolar
Дата добавления - 29.07.2014 в 07:20
Kokkolar Дата: Вторник, 29.07.2014, 09:41 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Извиняюсь. Вот файл-пример.

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 строке.
К сообщению приложен файл: example_01.xls (79.5 Kb)
 
Ответить
СообщениеИзвиняюсь. Вот файл-пример.

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
Дата добавления - 29.07.2014 в 09:41
RAN Дата: Вторник, 29.07.2014, 09:52 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Какая то надуманная проблема.
[vba]
Код
Sub Example_02()
'Worksheets("Лист2").
     Columns("A").Replace _
             What:="=", Replacement:="", _
             SearchOrder:=xlByRows, MatchCase:=True
End Sub
[/vba]
работает на всех листах. <_<


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеКакая то надуманная проблема.
[vba]
Код
Sub Example_02()
'Worksheets("Лист2").
     Columns("A").Replace _
             What:="=", Replacement:="", _
             SearchOrder:=xlByRows, MatchCase:=True
End Sub
[/vba]
работает на всех листах. <_<

Автор - RAN
Дата добавления - 29.07.2014 в 09:52
Kokkolar Дата: Вторник, 29.07.2014, 10:09 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Вставил твою версию. Все также: 3 лист исправляет полностью, а на 2 не дальше 200 строки.
 
Ответить
СообщениеВставил твою версию. Все также: 3 лист исправляет полностью, а на 2 не дальше 200 строки.

Автор - Kokkolar
Дата добавления - 29.07.2014 в 10:09
ikki Дата: Вторник, 29.07.2014, 10:14 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
[vba]
Код
Sub Example_01()
     If IsError(Cells(1, 1)) Then
         Cells(1, 1).Formula = "'" & Cells(1, 1).Formula
     End If
End Sub
[/vba]


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение[vba]
Код
Sub Example_01()
     If IsError(Cells(1, 1)) Then
         Cells(1, 1).Formula = "'" & Cells(1, 1).Formula
     End If
End Sub
[/vba]

Автор - ikki
Дата добавления - 29.07.2014 в 10:14
Kokkolar Дата: Вторник, 29.07.2014, 10:24 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Все работает. Большое спасибо!
 
Ответить
СообщениеВсе работает. Большое спасибо!

Автор - Kokkolar
Дата добавления - 29.07.2014 в 10:24
RAN Дата: Вторник, 29.07.2014, 11:14 | Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Я что, вручную делал? B)
К сообщению приложен файл: 9045330.xls (89.5 Kb)


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеЯ что, вручную делал? B)

Автор - RAN
Дата добавления - 29.07.2014 в 11:14
Kokkolar Дата: Среда, 30.07.2014, 02:01 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
У меня Replace-вариант на 2 листе неадекватно работал.
 
Ответить
СообщениеУ меня Replace-вариант на 2 листе неадекватно работал.

Автор - Kokkolar
Дата добавления - 30.07.2014 в 02:01
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Преобразование ячейки с ошибочной формулой в текст (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!