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

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

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

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: [Решено] Программное изменение регистра  (Прочитано 1360 раз)
0 Пользователей и 1 Гость смотрят эту тему.
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #40200: 30 Январь 2017, 11:59 »

Необходимо чтобы макрос срабатывал на событие листа, но в определенном диапазоне ячеек. В конкретном случае в В6:В27 и F6:F27.
JohnSUN дал вам развёрнутый ответ для разных вариантов, но под конкретные условия лучше отсечь не используемые варианты. Как вам такой вариант:
Код:
Sub onChange(oEvent As Variant)
Dim oFuncAcc As Variant
oFuncAcc=CreateUNOService("com.sun.star.sheet.FunctionAccess")
If oEvent.ImplementationName = "ScCellObj" Then ' Событие вызвано для одной ячейки
'если номер строки ячейки меньше 5 или больше 26 выходим из процедуры
If oEvent.CellAddress.Row<5 Or oEvent.CellAddress.Row>26 Then Exit Sub
' Адрес этой ячейки oEvent.CellAddress. В какой колонке находится изменившаяся ячейка?
Select Case oEvent.CellAddress.Column
Case 1 ' Колонка B - значение меняем с помощью функции Upper
oEvent.setString(oFuncAcc.callFunction("Upper", Array(oEvent.getString())))
Case 5 ' Колонка F - значение меняем с помощью функции Proper
oEvent.setString(oFuncAcc.callFunction("Proper", Array(oEvent.getString())))
' ... здесь могут быть другие Case для других колонок
   End Select
EndIf
End Sub
Записан

Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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