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

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

24 Май 2018, 16:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice  без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Как создать кнопку с формулой?  (Прочитано 6599 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ofeo
Новичок
*
Offline Offline

Сообщений: 5


« Стартовое сообщение: 19 Октябрь 2013, 15:21 »

Как создать кнопку, чтобы при нажатии на нее - очищались определенные ячейки?
Возможно ли вообще сделать такое?
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Online Online

Пол: Мужской
Расположение: Киев
Сообщений: 2 478


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #1: 20 Октябрь 2013, 19:13 »

Конечно, это возможно...
Но создание такой кнопки - чаще всего, лишний труд. Для очистки выделенных ячеек достаточно нажать Backspace.
Если так уж хочется видеть кнопку на панели инструментов и нажимать её мышкой, можно выбрать Сервис-Настройка, перейти на вкладку Панели инструментов, выбрать из списка панель с названием Форматирование. Можно, конечно, выбрать и любую другую или даже создать новую, но именно на панели Форматирование создатели офиса поместили кнопки для вставки/удаления строк и столбцов. Как раз возле этих кнопок удобнее всего пристроить новую - по смыслу близко.
А дальше просто: нажимаешь Добавить, выбираешь категорию Правка, в командах находишь Удалить содержимое, нажимаешь Добавить и Закрыть. Если вставил не в то место панели, кнопками со стрелочками передвигаешь новую кнопку в нужное место списка и нажимаешь ОК.
Теперь достаточно выделить мышкой нужные ячейки и нажать кнопку на панели инструментов - специальное окошко переспросит какие данные нужно удалить.
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
ofeo
Новичок
*
Offline Offline

Сообщений: 5


« Ответ #2: 20 Октябрь 2013, 19:55 »

А если мне нужно кнопку не на панели инструментов, а именно в таблице, чтобы она была на определенном листе и на этом же листе очищала определенные ячейки... так возможно?
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Online Online

Пол: Мужской
Расположение: Киев
Сообщений: 2 478


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #3: 20 Октябрь 2013, 21:22 »

Возможно и такое.
Нужно написать макрос, который очищает нужные ячейки. Это не сложно, выглядит приблизительно так:
Код:
Sub clrCells
Dim oActiveSheet As Variant
Dim oCellRangeByName As Variant
  oActiveSheet = ThisComponent.getCurrentController().getActiveSheet() ' Не заморачиваемся с поиском нужного листа -
' на этом листе кнопку нажали, значит на этом дисте и ячейки чистим
  oCellRangeByName = oActiveSheet.getCellRangeByName("D2:E18") ' Ну, адреса ячеек здесь вписаны от фонаря, впишешь нужные
  oCellRangeByName.clearContents(7) ' 7 = 1 (числа) + 2 (даты) + 4 (строки). Можно удалять и форматы, и формулы, и примечания...
End Sub
Этот макрос сохраняешь или в книге, в которой будешь им пользоваться, или прямо в библиотеке своих макросов всего офиса.
Потом через Вид-Панели инструментов-Элементы управления отображаешь панельку, с которой берешь кнопку и рисуешь её в нужном месте нужного листа. Отдельный значок на панельке - Элемент управления - откроет форму настроек, где сможешь задать надпись, цвет, картинку, размер и кучу всего разного для этой кнопки. В том числе и обработку события Выполнить действие: выбираешь для этого события только что сохраненный макрос, сохраняешь книгу, отключаешь режим разработки (кнопка с рукой на панели), закрываешь панель и пользуешься
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
ofeo
Новичок
*
Offline Offline

Сообщений: 5


« Ответ #4: 20 Октябрь 2013, 23:17 »

Оооооо.... то что надо!!! Большое Вам спасибо!
Записан
ofeo
Новичок
*
Offline Offline

Сообщений: 5


« Ответ #5: 20 Октябрь 2013, 23:24 »

А еще вопрос...
А если это несколько областей ячеек.. к примеру С1:D4 и G1:H4  - как прописать такое условие адресов ячеек?
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Online Online

Пол: Мужской
Расположение: Киев
Сообщений: 2 478


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #6: 21 Октябрь 2013, 09:21 »

Лучше всего - перечислить по очереди... Есть и другие способы, но этот самый простой.
Весь код этого макроса может быть записан "в одну строчку через точку":
Код:
Sub clrCells
  ThisComponent.getCurrentController().getActiveSheet().getCellRangeByName("D2:E18").clearContents(7)
End Sub
(Подробно расписывал, чтобы читать было понятнее - а работать будет и так.)
А значит для уточнённой задачи нужно просто повторить эту строчку нужное количество раз и вписать нужные диапазоны ячеек:
Код:
Sub clrCells
  ThisComponent.getCurrentController().getActiveSheet().getCellRangeByName("C1:D4").clearContents(7)
  ThisComponent.getCurrentController().getActiveSheet().getCellRangeByName("G1:H4").clearContents(7)
' ... и так столько раз сколько понадобится  
End Sub
« Последнее редактирование: 21 Октябрь 2013, 09:27 от JohnSUN » Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
ofeo
Новичок
*
Offline Offline

Сообщений: 5


« Ответ #7: 21 Октябрь 2013, 10:29 »

Всё получилось. Большое спасибо!
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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