Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

28 Сентябрь 2020, 21:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Очистка незащищенных ячеек  (Прочитано 2065 раз)
0 Пользователей и 1 Гость смотрят эту тему.
AlexWorkStream
Форумчанин
***
Offline Offline

Сообщений: 51


« Стартовое сообщение: 8 Ноябрь 2017, 15:56 »

Добрый день!
Появилась необходимость сделать очистку всех незащищенных ячеек на листе, без необходимости выделения диапазона.
Может кто уже встречал данный макрос?
Спасибо!
Записан
mikekaganski
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 043


« Ответ #1: 8 Ноябрь 2017, 16:03 »

Да, я понимаю, что вопрос задан в теме о BASIC, и ещё без выделения, но просто для информации: с выделением в UI это сделано в 6.0: https://bugs.documentfoundation.org/show_bug.cgi?id=95883
Записан

С уважением,
Михаил Каганский
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 3 014


iMac, LibreOffice и Apache OpenOffice


« Ответ #2: 8 Ноябрь 2017, 16:43 »

Появилась необходимость сделать очистку всех незащищенных ячеек на листе, без необходимости выделения диапазона.
Может кто уже встречал данный макрос?
Вот:
Код:
Sub Main
Dim oRanges, n
oRanges=ThisComponent.Sheets(0).getCellFormatRanges()
For Each n In oRanges
If Not n.CellProtection.IsLocked Then n.clearContents(7)  'сотрёт числа даты и строки во всех незащищённых ячейках
Next
End Sub
Записан

AlexWorkStream
Форумчанин
***
Offline Offline

Сообщений: 51


« Ответ #3: 8 Ноябрь 2017, 17:46 »

Вот:
Спасибо - все работает!
Записан
Prototip
Новичок
*
Offline Offline

Сообщений: 4


« Ответ #4: 7 Сентябрь 2020, 07:44 »

Добрый день, подскажите как можно использовать для выделенных ячеек
Цитата: AlexWorkStream от  8 Ноябрь 2017, 13:56
Появилась необходимость сделать очистку всех незащищенных ячеек на листе, без необходимости выделения диапазона.
Может кто уже встречал данный макрос?
Вот:
Код:

Sub Main
Dim oRanges, n
oRanges=ThisComponent.Sheets(0).getCellFormatRanges()
For Each n In oRanges
If Not n.CellProtection.IsLocked Then n.clearContents(7)  'сотрёт числа даты и строки во всех незащищённых ячейках
Next
End Sub
Записан
sokol92
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 163


WWW
« Ответ #5: 7 Сентябрь 2020, 11:54 »

Можно так:

Код:
Sub ClearSelection
  Dim oSel, oRange
 
  oSel=ThisComponent.CurrentSelection
  If HasUnoInterfaces( oSel, "com.sun.star.sheet.XSheetCellRanges") Then ' выделение содержит несколько прямоугольных областей
    For Each oRange In oSel
      ClearRange_ByRami(oRange)
    Next oRange 
  ElseIf HasUnoInterfaces( oSel, "com.sun.star.sheet.XSheetCellRange") Then ' один прямоугольный диапазон
    ClearRange_ByRami(oSel)   
  Else
    Msgbox "Выделите диапазон(ы) ячеек"
  End If 
End Sub

Sub ClearRange_ByRami(ByVal oRange)
  Dim oRanges, n
  oRanges=oRange.getCellFormatRanges()
  For Each n In oRanges
    If Not n.CellProtection.IsLocked Then n.clearContents(7)  'сотрёт числа даты и строки во всех незащищённых ячейках
  Next
End Sub
« Последнее редактирование: 7 Сентябрь 2020, 12:05 от sokol92 » Записан

Владимир.
Prototip
Новичок
*
Offline Offline

Сообщений: 4


« Ответ #6: 8 Сентябрь 2020, 11:15 »

Спасибо, sokol92  Всё хорошо
Всё работает, всё красиво, но время выполнения полный ахтунг. Что нибудь слелать можно Непонимающий

* Tablo.ods (92.62 Кб - загружено 13 раз.)
Записан
sokol92
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 163


WWW
« Ответ #7: 8 Сентябрь 2020, 16:32 »

Замените getCellFormatRanges() на getUniqueCellFormatRanges()

Должно ускориться!

P.S. В разделе "последние сообщения" форума:  Смеющийся

Цитата:
Re: Очистка незащищенных ячеек от sokol92 (Basic)
 
« Последнее редактирование: 8 Сентябрь 2020, 16:59 от sokol92 » Записан

Владимир.
Prototip
Новичок
*
Offline Offline

Сообщений: 4


« Ответ #8: 9 Сентябрь 2020, 11:54 »


Должно ускориться!


Ускорение в 16 раз

Спасибо, rami, sokol92  Всё хорошо
Записан
sokol92
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 163


WWW
« Ответ #9: 9 Сентябрь 2020, 12:05 »

Отлично! Кстати, в Excel нет аналога указанным методам группировки ячеек по формату.
Записан

Владимир.
Prototip
Новичок
*
Offline Offline

Сообщений: 4


« Ответ #10: 10 Сентябрь 2020, 11:52 »

Добрый день, имеется ввиду "Unique" ? Прекрасный козырь в рукаве  Крутой
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!