Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Удаление ячеек с делением на ноль


Автор: magg57 25.6.2010, 08:25
Здравствуйте, потихоньку пытаюсь изучить макросы, появилась задача нашел в инете похожий код чуть чуть его переделал. Вобщем то все работает но есть одна проблема, при выполнении макроса удаляются все ячейки с делением на ноль, а мне нужно что бы удалялись ячейки допустим в диапазоне от h4:H500. Как вписать в мой код этот диапазон заранее спасибо если кто откликнется. 
Вот сам код.

Set rErrorRange = Cells.SpecialCells(xlCellTypeFormulas, xlErrors)
For Each cErrorCell In rErrorRange
cErrorCell.ClearContents
Next
ErrNotFound:
ActiveSheet.Protect
End Sub

Автор: Akina 25.6.2010, 09:06
При выполнении макроса удаляются любые формулы с ошибками, не только с делением на ноль.

Цитата(magg57 @  25.6.2010,  09:25 Найти цитируемый пост)
мне нужно что бы удалялись ячейки допустим в диапазоне от h4:H500

В таком случае тебе ЭТОТ код не нужен.
Выполни вручную очистку этих клеток. Запиши макрорекордером. Изучай и используй.

Цитата(magg57 @  25.6.2010,  09:25 Найти цитируемый пост)
потихоньку пытаюсь изучить макросы

Учиться надо системно, а не методом тыка.
http://www.intuit.ru/catalog/office/

Автор: magg57 28.6.2010, 11:42
Смысл в том что бы при нажатии на кнопку происходила обработка всего листа кроме этого кода есть и другие которые выполняются последовательно. Поэтому и попросил конкретного ответа на мой вопрос, если есть умение могли бы помочь, если нет не надо меня критиковать. И с помощью макрорекордера это сделать не как не получится так как количество и нахождение ячеек всегда разное.

Автор: Hugo121 28.6.2010, 11:51
Set rErrorRange = [h4:H500].Cells.SpecialCells(xlCellTypeFormulas, xlErrors)

Автор: Akina 28.6.2010, 11:52
Цитата(magg57 @  28.6.2010,  12:42 Найти цитируемый пост)
попросил конкретного ответа на мой вопрос, если есть умение могли бы помочь, если нет не надо меня критиковать.

Это называется не "помочь", а "сделать за тебя". 

Цитата(magg57 @  28.6.2010,  12:42 Найти цитируемый пост)
 с помощью макрорекордера это сделать не как не получится так как количество и нахождение ячеек всегда разное. 

Фигню ты говоришь - потому я и предлагаю начинать с основ, которых у тебя нет.
Не хочешь? ну и не надо... мне пофиг. Жди, может придёт тот, кто за тебя сделает. Вот только знаний в твоей голове оттого не прибавится.

Автор: Hugo121 28.6.2010, 12:02
Да ладно, может и научится на примерах...
Код

Option Explicit

Sub tt()
Dim x As Long, y As Long
Dim rErrorRange As Range, cErrorCell As Range

x = 1
y = 100

Set rErrorRange = Range(Cells(x, 1), Cells(y, 1)).Cells.SpecialCells(xlCellTypeFormulas, xlErrors)
For Each cErrorCell In rErrorRange
cErrorCell.ClearContents
Next
End Sub


Автор: magg57 28.6.2010, 14:11
Hugo121 Спасибо за ответ все работает как надо! Akina спасибо за ссылку изучаю основы!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)