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

Вход

Регистрация

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

 

= Мир MS Excel/Макрос очистки незащищенных объединенных ячеек - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос очистки незащищенных объединенных ячеек (Макросы/Sub)
Макрос очистки незащищенных объединенных ячеек
drugojandrew Дата: Пятница, 02.11.2018, 11:16 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 95
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день.
Есть макрос для очистки незащищенных ячеек:
[vba]
Код
Sub Clear_Cell()
Dim r As Range, ur As Range
    Set ur = Cells(1, 1)
    
    For Each c In ActiveSheet.UsedRange.Cells
        If Not c.Locked Then c.ClearContents
    Next c

    Set ur = Nothing
End Sub
[/vba]
Но если ячейки объединены, то он выдает ошибку. Что нужно подправить, чтобы он работал? Пример приложил. Незащищенные ячейки выделены желтым цветом.
К сообщению приложен файл: Primer1.xls(43.0 Kb)
 
Ответить
СообщениеДобрый день.
Есть макрос для очистки незащищенных ячеек:
[vba]
Код
Sub Clear_Cell()
Dim r As Range, ur As Range
    Set ur = Cells(1, 1)
    
    For Each c In ActiveSheet.UsedRange.Cells
        If Not c.Locked Then c.ClearContents
    Next c

    Set ur = Nothing
End Sub
[/vba]
Но если ячейки объединены, то он выдает ошибку. Что нужно подправить, чтобы он работал? Пример приложил. Незащищенные ячейки выделены желтым цветом.

Автор - drugojandrew
Дата добавления - 02.11.2018 в 11:16
sboy Дата: Пятница, 02.11.2018, 11:24 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 2198
Репутация: 624 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
Добавьте проверку на объединение ячеек
[vba]
Код
Sub Clear_Cell()
Dim r As Range, ur As Range
    Set ur = Cells(1, 1) ' очищаемую ячейку - в формируемый диапазон '
    
    For Each c In ActiveSheet.UsedRange.Cells
        If Not c.Locked Then
            If c.MergeCells Then
                c.MergeArea.ClearContents
            Else
                c.ClearContents
            End If
        End If
    Next c

    Set ur = Nothing ' освобождаем память '
End Sub
[/vba]
К сообщению приложен файл: Primer1-2-.xls(43.5 Kb)
 
Ответить
СообщениеДобрый день.
Добавьте проверку на объединение ячеек
[vba]
Код
Sub Clear_Cell()
Dim r As Range, ur As Range
    Set ur = Cells(1, 1) ' очищаемую ячейку - в формируемый диапазон '
    
    For Each c In ActiveSheet.UsedRange.Cells
        If Not c.Locked Then
            If c.MergeCells Then
                c.MergeArea.ClearContents
            Else
                c.ClearContents
            End If
        End If
    Next c

    Set ur = Nothing ' освобождаем память '
End Sub
[/vba]

Автор - sboy
Дата добавления - 02.11.2018 в 11:24
_Boroda_ Дата: Пятница, 02.11.2018, 11:34 | Сообщение № 3
Группа: Модераторы
Ранг: Местный житель
Сообщений: 13514
Репутация: 5529 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Прямо сразу можно
[vba]
Код
If Not c.Locked Then c.MergeArea.ClearContents
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеПрямо сразу можно
[vba]
Код
If Not c.Locked Then c.MergeArea.ClearContents
[/vba]

Автор - _Boroda_
Дата добавления - 02.11.2018 в 11:34
drugojandrew Дата: Пятница, 02.11.2018, 11:39 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 95
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
sboy, _Boroda_, спасибо, работает.
 
Ответить
Сообщениеsboy, _Boroda_, спасибо, работает.

Автор - drugojandrew
Дата добавления - 02.11.2018 в 11:39
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос очистки незащищенных объединенных ячеек (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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