Автоматическое скрытие строк по событию (изменение данных) и оптим. высота строк

Автор vovan_d, 10 апреля 2019, 09:30

0 Пользователи и 1 гость просматривают эту тему.

vovan_d

Вот так работает:

Sub test_filtr1

Dim oSheet As Variant, oEmpty As Variant, oRows As Variant, i As Long '- задаем перемнные
    oSheet = ThisComponent.getCurrentSelection().getSpreadsheet() '-лист на котором будем работать
   oSheet.getRows().IsVisible = True ' - делаем е строки на листе видимыми
   oSheet = ThisComponent.sheets(1) ' - текущая страница

rem - оптимизация строк по высоте
rem ------------------------------------------------------------------------------------------------------------------------------
     For i =24 to 78
      ThisComponent.Sheets(1).getCellbyPosition(24,i).getRows().OptimalHeight=true '-оптимальная высота
     Next i

rem - убрать строки с значением 0
rem ------------------------------------------------------------------------------------------------------------------------------
     For i = 24 To  78 ' - какие строки обработать
      If    oSheet.getCellByPosition(24,i).value = 0 Then ' - какие ячейки обрабатывать
          oSheet.getCellByPosition(24,i).getRows().IsVisible = False ' - скрыть строки которые соответсвуют значению строки выше
     EndIf
Next

End Sub ' - все :)

Наверно уже надоел, всем, но последнее - почему если макрос прописан в "Мои макросы и диалоги" и привязан к кнопке, работает, как только переношу его в макросы документа - не работает. Мне нужно это для того чтобы можно было запускать файл на другом компьютере.

vovan_d

Цитата: Bigor от 11 апреля 2019, 15:45
Цитата: vovan_d от 11 апреля 2019, 13:26настроил данный макрос в Manjaro, открываю файл Win7 - Libreoffice, макрос не работает
а где макрос сохранили, и что за файл  Win7 - Libreoffice ods/xls ?

Все делаю в формате ODS

bigor

Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

vovan_d

Мои скриншоты

bigor

удалите секретные данные, и выложите файл, по картинкам не понятно.
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

vovan_d

Цитата: Bigor от 11 апреля 2019, 16:18
удалите секретные данные, и выложите файл, по картинкам не понятно.

Спасибо за оказанную помощь, попробую сам разобраться с переносом макроса, а то нужно сильно много чего убирать, файл на стадии завершения.

vovan_d

Добрый день!
 
    В дополнение данной темы, необходимо в макросе дописать строку (строчки) чтобы на странице 1 при значении "1" (истина) в ячейке,
    на странице 2 скрылись строки в дипазоне.

bigor

Цитата: vovan_d от 23 апреля 2019, 11:34чтобы на странице 1 при значении "1" (истина) в ячейке,
    на странице 2 скрылись строки в дипазоне.

"1" в какой ячейке проверять? и в каком диапазоне строки скрывать?
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

vovan_d

Цитата: Bigor от 23 апреля 2019, 11:39
Цитата: vovan_d от 23 апреля 2019, 11:34чтобы на странице 1 при значении "1" (истина) в ячейке,
    на странице 2 скрылись строки в дипазоне.

"1" в какой ячейке проверять? и в каком диапазоне строки скрывать?

Допустим "Лист1" ячейка J48 - "1". Нужно скрыть на "Лист2" строки 13-47.

bigor

Ну тогда как-то так:

If ThisComponent.Sheets(0).getCellByPosition(9,47).value = 1 Then
      For i = 12 To  46 ' - какие строки обработать
              ThisComponent.Sheets(1).getCellByPosition(0,i).getRows().IsVisible = False
      Next
End If
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

vovan_d

Цитата: Bigor от 23 апреля 2019, 12:11
Ну тогда как-то так:

If ThisComponent.Sheets(0).getCellByPosition(9,47).value = 1 Then
      For i = 12 To  46 ' - какие строки обработать
              ThisComponent.Sheets(1).getCellByPosition(0,i).getRows().IsVisible = False
      Next
End If


Спасибо!