Фильтр по строкам

Автор OOKapitan, 24 апреля 2018, 14:08

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

economist

#15
Вот набросал пример и файл-вложение. Используется "гибридный" код SB+VBA.
Нажатие на кнопку прячет пустые столбцы и вертает их обратно.
АвтоФильтр работает именно по той строке, в которой сейчас находится курсор (выделена ячейка). Это может быть где угодно в синей области).
Фильтруются столбцы из зеленой области (задается в коде здесь - [C:F].columns)


Option VBASupport 1
Option Compatible

Sub Afilter
' циклический автофильтр столбцов по кнопке
filter=ChangeTextButton ' сменим текст фильтра на кнопке
[C:F].columnwidth=10 ' восстановили ширину столбцов

For each st in [C:F].columns ' ограничили область действия фильтра
if filter="все" then st.columnwidth=10
if filter="без пустых" and cells(Activecell.row, st.column).value="" then st.columnwidth=0
next st
End Sub


Function ChangeTextButton as string
' циклическая менялка Текста на кнопке
dim oController, oButtonModel, oButtonControl
oController = ThisComponent.CurrentController
oButtonModel = oController.ActiveSheet.DrawPage.Forms(0).getByName("Кнопка 1")
oButtonControl = oController.getControl(oButtonModel)

if oButtonControl.model.label="все" then
oButtonControl.model.label="без пустых"
elseif oButtonControl.model.label="без пустых" then ' условий можно здесь написать много
oButtonControl.model.label="все"
end if

' oButtonControl.Model.BackgroundColor = RGB(50, 0, 0) ' можно менять цвет кнопки
' подробно про кнопки https://wiki.openoffice.org/wiki/Documentation/BASIC_Guide/Control_Element_Forms

ChangeTextButton=oButtonControl.model.label ' так делается возврат значения функции
End function
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...