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

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

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

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1 2 »   Вниз
  Печать  
Автор Тема: Координатное выделение 2  (Прочитано 7516 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Донченко Валерий
Участник
**
Offline Offline

Сообщений: 12


« Стартовое сообщение: 6 Август 2015, 15:56 »

Подскажите пожалуйста, может ли кто перевести код VBA в код OpenOffice Basic? К сожалению, в программировании не силен. Нашел удачный, на мой взгляд, вариант на VBA. На форуме тема обсуждалась достаточно давно (Февраль 2012 года), поэтому создал свою тему.
Код:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim WorkRange As Range
    Dim wi As Window
    Set wi = ActiveWindow
    If Target.Cells.Count > 1 Then Exit Sub  'если выделено больше 1 ячейки - выходим'
    Application.ScreenUpdating = False
    Set WorkRange = wi.VisibleRange 'адрес рабочего диапазона, в пределах которого видно выделение'
    Intersect(WorkRange, Target.EntireRow).Select   'формируем строку диапазон и выделяем'
    Intersect(WorkRange, Union(Target.EntireRow, Target.EntireColumn)).Select 'формируем крестообразный диапазон и выделяем'
    Target.Activate
End Sub
« Последнее редактирование: 19 Август 2015, 19:15 от Донченко Валерий » Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #1: 6 Август 2015, 23:28 »

может ли кто перевести код VBA в код OpenOffice Basic?
Сам макрос в LibreOffice/Apache OpenOffice не работает, но его аналог можно сделать. Вот, например:

* Координатное выделение.ods (9.26 Кб - загружено 29 раз.)
Записан

Донченко Валерий
Участник
**
Offline Offline

Сообщений: 12


« Ответ #2: 7 Август 2015, 00:12 »

Сам макрос в LibreOffice/Apache OpenOffice не работает, но его аналог можно сделать.
Я как раз это и имел в виду. Спаибо за предложенный вариант. Но вариант на VBA, без кнопок "Включить" и "Выключить" и координатное выделение самостоятельно обновляется при "перемещении" активной ячейки стрелками на клавиатуре.
Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #3: 7 Август 2015, 00:22 »

Если без кнопок, то будет действовать постоянно, мешая редактировать. А какие действия вам нужно выполнять?
Записан

Донченко Валерий
Участник
**
Offline Offline

Сообщений: 12


« Ответ #4: 7 Август 2015, 00:26 »

Работать с большими таблицами. Вместо линейки  Улыбка
Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #5: 7 Август 2015, 00:33 »

Работать с большими таблицами. Вместо линейки
Просто "разглядывать" большую таблицу или редактировать. Попробуйте поработать с включенной кнопкой, если не будет мешать, то я уберу кнопки.
Записан

Донченко Валерий
Участник
**
Offline Offline

Сообщений: 12


« Ответ #6: 7 Август 2015, 00:42 »

"Разглядывать" и при необходимости редактировать. С включенной кнопкой активная ячейка не "перемещается" стрелками на клавиатуре.
Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #7: 7 Август 2015, 00:49 »

С включенной кнопкой активная ячейка не "перемещается" стрелками на клавиатуре.
Сама ячейка перемещается стрелками, а выделение нет. Вам нужно чтобы выделение смещалось только стрелками?
Записан

Донченко Валерий
Участник
**
Offline Offline

Сообщений: 12


« Ответ #8: 7 Август 2015, 00:56 »

Сама ячейка перемещается стрелками, а выделение нет.
Ни ячейка, ни выделение не перемещаются при включенной кнопке. А во время редактирования данных в таблице, в выделении нет необходимости.
Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #9: 7 Август 2015, 01:08 »

Ни ячейка, ни выделение не перемещаются при включенной кнопке. А во время редактирования данных в таблице, в выделении нет необходимости.
У меня работает нормально на разных офисах. Нужно нажать кнопку включить и "тыкать" мышкой в ячейки, если смещать ячейку стрелками, то выделение исчезает
Записан

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

Сообщений: 754


Woe from wit


« Ответ #10: 7 Август 2015, 23:44 »

Как вариант:

* строка-столбец.ods (10.66 Кб - загружено 18 раз.)
Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #11: 8 Август 2015, 00:11 »

Как вариант:
Во-первых стирает фоны ячеек и не подходит для таблиц с цветными ячейками.
Во-вторых мельтешит в LibreOffice, в Apache OpenOffice нормально.

Универсального решения нет и в зависимости от условий можно предложить несколько разных вариантов каждый из которых будет иметь какие-то недостатки.
Записан

Донченко Валерий
Участник
**
Offline Offline

Сообщений: 12


« Ответ #12: 14 Август 2015, 22:10 »

Первоначальный вариант устраивает:
Код:
Global oDocView, oMouseClickHandler
Sub RegisterMouseClickHandler
oDocView=ThisComponent.currentController
oMouseClickHandler=createUnoListener("MyApp_","com.sun.star.awt.XMouseClickHandler")
oDocView.addMouseClickHandler(oMouseClickHandler)
End Sub

Sub UnregisterMouseClickHandler
oDocView.removeMouseClickHandler(oMouseClickHandler)
End Sub

Sub MyApp_disposing
End Sub

Function MyApp_mousePressed(oEvt) As Boolean
MyApp_mousePressed=False
End Function

Function MyApp_mouseReleased(oEvt) As Boolean
MyApp_mouseReleased=False
on error resume next
oCell=ThisComponent.CurrentSelection
oRanges=ThisComponent.createInstance("com.sun.star.sheet.SheetCellRanges")
oCol=oCell.Columns.getByIndex(0).RangeAddress
oRow=oCell.Rows.getByIndex(0).RangeAddress
oRanges.addRangeAddresses(Array(oCell.RangeAddress,oCol,oRow),False)
ThisComponent.CurrentController.select(oRanges)
End Function


Sub Macro1

End Sub
После запуска RegisterMouseClickHandler макрос делает, то что требуется. Но можно ли поправить код таким образом, чтобы выделение не пропадало при "перемещении" активной ячейки стрелками на клавиатуре?
Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #13: 15 Август 2015, 08:27 »

Но можно ли поправить код таким образом, чтобы выделение не пропадало при "перемещении" активной ячейки стрелками на клавиатуре?
Нет, перемещение активной ячейки всегда снимает выделение
Записан

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

Сообщений: 754


Woe from wit


« Ответ #14: 15 Август 2015, 23:57 »

Во-первых стирает фоны ячеек и не подходит для таблиц с цветными ячейками.
Можно сделать так, чтобы не стирало.

* строка-столбец(1).ods (13.85 Кб - загружено 22 раз.)
Записан
Страниц: 1 2 »   Вверх
  Печать  
 
Перейти в:  

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