Страницы: 1
RSS
При выполнении макроса выполняется отмена объединения ячеек, Отмена объединения
 
Здравствуйте! Поиск мне не помог. Поэтому прошу помощи.

При выполнении макроса CleanMar2 в диапазоне L18:L39 (удаление последнего введенного значения) выполняется отмена объединения ячеек. Как оставить ячейки объеденными после удаления значения?
 
Если пройдете по Вашему макросу пошагово, то на строке
Код
If Cells(i, "L").Delete = "" Then Exit Sub

получите сообщение

И вообще странный какой-то стнтаксис. Что Вы проверяете этой конструкцией?
Метод Range.Delete (Excel)
Это МЕТОД(!) и сравнивать его с пустой строкой как-то странно
Напишите лучше что должен делать макрос? Какую задачу решаете? А не способ, которым пытаетесь ее решить
Изменено: Sanja - 13.03.2026 07:22:36
Согласие есть продукт при полном непротивлении сторон
 
Цитата
ivv3000 написал: удаление последнего введенного значения
Если Вам нужно удалить Значение, а не Ячейку (что делает метод Range.Delete), то используйте Range.Clear, Range.ClearContents и т.п.
Согласие есть продукт при полном непротивлении сторон
 
Если значения удаляются внутри объединенных ячеек - то надо использовать не Clear или ClearContents, а Cells(i, "L").value = empty.
Иначе получим либо ошибку, либо все тоже разъединение ячеек.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
А чего тут говорить. Макрос честно стыренный в инете, просто пытался подогнать его под свою задачу.
Мне нужно чтобы в диапазоне удалялось последнее введенное значение.  
 
Цитата
Дмитрий(The_Prist) Щербаков написал: либо все тоже разъединение ячеек
Код
Range("L" & i).MergeArea.ClearContents
Согласие есть продукт при полном непротивлении сторон
 
Цитата
ivv3000 написал: удалялось последнее введенное значение
Последняя ячейка с данными в диапазоне и последнее введенное значение это разные вещи. Можно ввести значение выше последней ячейки с данными.
Но это совсем другая тема
По поводу отмены объединения при очистке ответы даны
Согласие есть продукт при полном непротивлении сторон
 
Не вижу смысла в таких заморочках, когда есть Empty :) Притом, что ClearContents по сути делает тоже самое, только является методом. И цитата не та взята  ;)  - ClearContents как раз не приводит к отмене объединения - он выдаст ошибку, т.к. не может быть использован для только одной ячейки внутри объединенных.  
И еще момент, который стоит упомянуть(мало ли кому пригодится) - если применять MergeArea - то удаление значений происходит во всех ячейках объединенной. На практике не всегда это нужно по нескольким причинам:
1. Не всегда значение только в левой верхней(мы же знаем, что есть разные трюки для сохранения значений всех ячеек)
2. Не всегда надо удалять именно значение левой верхней - иногда объединенная ячейка просто попадает под условие и по сути там ничего не надо удалять, т.к. по условию попадает под очистку та ячейка, которая не является верхней левой. Например, когда удаление происходит в диапазоне в виде строк: Cells(5,2).Resize(,6). При этом объединенная ячейка только в столбце В. В этом случае Empty сработает как ожидалось, ClearContents может удалить лишнее или выдать ошибку, т.к. MergeArea не может быть применено к группе ячеек.
Изменено: Дмитрий(The_Prist) Щербаков - 13.03.2026 10:01:27
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Убедил  :D
Согласие есть продукт при полном непротивлении сторон
Страницы: 1
Читают тему
Наверх