Страницы: 1
RSS
Макрос перебора ячеек, Как задать переменную правильно
 
Добрый день.
Прошу Вас подскажите как можно ускорить работу части макроса.
Во вложении пример где уже стоит полный текст макроса. при нажатии клавиши он совершит работу и выдаст затраченное время.
Код
Gran = Evaluate("COUNTA(E6:E2708)+9") ' определяю границу обрабатываемых ячеек по наличию в ней каких либо данных
 For Each ccel In Range("n9:n" & Gran) ' цикл
                     Set d = ccel.Offset(0, -2)    'объявление переменных 
                     Set g = ccel.Offset(0, -7)
                     Set j = ccel.Offset(0, -3)
                     Set k = ccel.Offset(0, -4)
            If ccel = "Да" Then             ' проверяем если"Да" в определенной ячейке
d.FormulaR1C1 = "=RC[1]"                    ' выполняем действие с ячейкой (очистка или вставка формулы или смена формата
j.Clear
k.Clear
Else
g.Value = Round(g.Value, 2)                 ' выполняем действие с ячейкой (очистка или вставка формулы или смена формата
g.NumberFormat = "General"
End If
Next ccel                                                     'переходим к следующей
Изменено: Максим Колесников - 13.07.2020 18:36:25
Не внимателен при вводе текста хорошо что есть F7
 
Не перебирать ячейки, работать с массивами. Это ответ точно по названию темы. Ответ получен?
В первоим сообщении нужно описывать задачу. Где оно? Гне пример, на котором помогающие смогут поверять макрос?

Не первый день нафоруме...
 
Можно начать с логики:
If ccel = "Да" Then - вот тогда и есть смысл ставить формулу и очищать диапазоны.
Ну а в другом случае - округлять и ставить формат.
И переменные тут вообще не нужны!
Изменено: Hugo - 13.07.2020 19:38:44
 
Спасибо. На 20% времени уменьшилось.
Если конечно правильно Вас понял.
Может надо на что-то заменить синтаксис
Код
Offset(0, -2)
У меня получилось так. Это Вы имели введу?
Код
Gran = Evaluate("COUNTA(E6:E2708)+9")
 For Each ccel In Range("n9:n" & Gran)
                   
            If ccel = "Да" Then

ccel.Offset(0, -2).FormulaR1C1 = "=RC[1]"
ccel.Offset(0, -7).Clear
ccel.Offset(0, -4).Clear

Else
ccel.Offset(0, -7).Value = Round(ccel.Offset(0, -7).Value, 2)
ccel.Offset(0, -7).NumberFormat = "General"
End If

Next ccel

Изменено: Максим Колесников - 14.07.2020 09:29:16
Не внимателен при вводе текста хорошо что есть F7
 
Меня поняли неправильно.  Нужно предложить название темы
 
Не понял :( .
Цитата
vikttur написал:
Нужно предложить
Как предложить? Не создавать а как-то отправить запрос на предложение темы?
Цитата
vikttur написал:
Не перебирать ячейки, работать с массивами.
Изменить тему уже не могу.
Цитата
vikttur написал:
Это ответ точно по названию темы
Имеется ввиду тема работа с массивами?
Цитата
vikttur написал:
Ответ получен?
Ответ? "Hugo" - Давал его получен и результат есть.

"The Wall"
Не внимателен при вводе текста хорошо что есть F7
 
Цитата
Максим Колесников написал: Как предложить?
Написать в сообщении название темы. Заменят модераторы
Страницы: 1
Наверх