Страницы: 1
RSS
Очистка содержимого незащищенных ячеек
 
Добрый день,
подскажите , пожалуйста, есть ли такая возможность.
Есть лист ексель , который защищен паролем
на листе есть защищенные ячейки и не защищенные ячейки .
Так вот, вопрос в следующем:
Есть ли возможность как то с помощью VBA очистить ВСЕ незащищеные ячейки на листе , а защищенные чтобы остались неизменными ?
50 times helped - they forgot, 1 time refused - they memorized
 
Макросом. Перебор ячеек диапазона в цикле с проверкой на защищаемая/не защищаемая с очисткой соответсвующих
Согласие есть продукт при полном непротивлении сторон
 
пробовал вот так
Код
Sub tt()
Dim rng As Range: Set rng = [A1:H13]
Dim cell As Range
For Each cell In rng.Cells
If Not cell.Locked Then
ActiveCells.ClearContent
End If
Next
End Sub

но не очищает .
50 times helped - they forgot, 1 time refused - they memorized
 
YouRock, код следует оформлять соответствующим тегом - ведь видели, как он выглядит у других?
Ищите такую кнопку и исправьте своё сообщение.
По вопросу: зачем в коде ActiveCell?
 
Код
If Not cell.Locked Then
Cell.ClearContent
 
Извините, давно не был на форуме, забыл! исправлюсь
Цитата
Юрий М написал:
По вопросу: зачем в коде ActiveCell?
натолкните,пожалуйста, на правильное решение.
50 times helped - they forgot, 1 time refused - they memorized
 
Толчок в #5 ))
 
Код
Sub NoLockedClear()
Dim cl As Range
With ActiveSheet
    For Each cl In .UsedRange.Cells
        If Not cl.Locked Then cl.ClearContents
    Nex
End With
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Юрий М написал: Толчок в #5 ))
пробовал я вместо ActiveCells ставить Cell , так же история, не очищает  
50 times helped - they forgot, 1 time refused - they memorized
 
Чем докажете?
 
когда ставлю Cell пишет что cell не поддерживает ClearContent.
50 times helped - they forgot, 1 time refused - they memorized
 
Мой код видели (#8)? В Вашем файле он сработал как нужно
Изменено: Sanja - 04.11.2016 14:27:19
Согласие есть продукт при полном непротивлении сторон
 
Код
Sub tt()
Dim rng As Range: Set rng = [A1:H13]
Dim cell As Range
    For Each cell In rng.Cells
        If Not cell.Locked Then
            cell.ClearContents
        End If
    Next
End Sub
ClearContents  ;)
 
Цитата
Sanja написал:
Мой код видели (#? В Вашем файле он сработал как нужно
извиняюсь, не увидел ,работает как надо! большое спасибо!
50 times helped - they forgot, 1 time refused - they memorized
 
Ваш код тоже сработает, если добавить красную буковку ))
 
Цитата
Юрий М написал: ClearContents  ;)
Цитата
Юрий М написал: #5
If Not cell.Locked Then
Cell.ClearContent
;)
Согласие есть продукт при полном непротивлении сторон
 
Да - просто скопировал исходный текст - акцент был на активную ячейку, а туда и не глянул )
 
А если есть такая константа - незащищённая ячейка, то можно обойтись и без цикла: применить к диапазону )
 

Вариант в разы быстрее и проще, особенно при большом диапазоне ячеек

Код
Sub cl()
Dim rng As Range: Set rng = [I8:DD108]
On Error Resume Next
Application.ScreenUpdating = False
rng.Value = ""
Application.ScreenUpdating = True
End Sub

Изменено: Артём Кремлёв - 20.10.2019 11:02:12
 
... и особенно  быстро отработает, когда в указанном диапазоне есть хоть одна защишенная ячейка :)

Артём Кремлёв, Ваш код не очищает ячейки, но записывает текст нулевой длины. В темной комнате не видно черной кошки, но она там есть :)
 
vikttur, Ну тут можно много тролить
Application.ScreenUpdating = False /True -существенное ускорение для того что между ними.
По вопросам из тем форума, личку не читаю.
 
Добрый день!
Требуется очистить ячейки в произвольном диапазоне (а то и во всём листе) по признаку цвета текста, цифр в ячейке.
Цикл работает, ячейки не чистятся, ошибка при  Cell.ClearContents.
Вот что сообразил и вспомнил:
Код
Public Function SBC(DataRange As Range, ColorSample As Range) As Double
Dim Sum As Double
Application.Volatile True
For Each Cell In DataRange
    If Cell.Font.Color = ColorSample.Font.Color Then
'       Cell.ClearContents
        Sum = Sum + 1
    End If
Next Cell
SBC = Sum
End Function


Элементарно прошу помочь в элементарном. Сто лет здесь не был.
Спасибо.
Изменено: march - 20.01.2020 17:28:54
 
Создайте отдельную тему с названием, отражающим суть задачи. Прикрепленный небольшой пример ускоряет помощь.
 
Неужели у Excel'а нет возможности без макроса очистить одним махом только незащищенные ячейки, пропуская защищенные?
Пробовал это проделать в "softmaker office 2010", в "LibreOffice 3", в "Spread32" - они  тоже это не могут.
Тогда я проделал это же на SC4, SC5 - это табличные процессоры (аналоги Excel'а) под DOS. По работе пришлось с ними познакомиться. В других не пробовал.
Результат Вас удивит - они могут это делать, т.е. очищают одним махом таблицу с незащищенными ячейками, пропуская защищенные. И без макросов.
Я все время проверял каждую новую версию Excel'а, начиная с Office 97, в надежде на то, что когда-нибудь появится такая возможность. Но, наверное, не дождусь... Печально, но эта возможность очень удобная в работе..
Изменено: Roiko - 19.08.2023 22:01:12
 
Цитата
Roiko написал:
Я все время проверял каждую новую версию Excel'а, начиная с Office 97
Вместо 25-летнего ожидания попросили бы разработчика расширить этот диалог.  :D
Владимир
 
Цитата
написал:
попросили бы разработчика расширить  этот  диалог
Можно так, как Вы предложили, т.е. "...в Москву через Владивосток...".
Но проще "Ctrl+A", затем "Del".
Страницы: 1
Наверх