Autoukrywanie wierszy

Użytkowanie arkusza kalkulacyjnego
gery77
Posty: 22
Rejestracja: czw kwie 04, 2013 11:28 am

Autoukrywanie wierszy

Post autor: gery77 »

Witam,
Proszę o pomoc w stworzeniu makra które ukryje te wiersze w kalkulacji gdzie będzie występował znaczek "-" w kolumnie B (Nazwa opis) z zakresu od wiersza 3 do 102.
Plik w załączniku.

Z góry dzięki za pomoc.
Załączniki
kalkulacja.ods
(19.41 KiB) Pobrany 160 razy
Libre Office 5.1.5.2
Minio
Posty: 323
Rejestracja: śr sie 01, 2012 1:48 am
Lokalizacja: (Poznań|Dziwnów), Polska

Re: Autoukrywanie wierszy

Post autor: Minio »

Czy to koniecznie musi być makro?
Bo samo ukrycie zbędnych wierszy bez problemu załatwisz filtrem.
Mój blog o używaniu LibreOffice
LibreOffice 4.2.6, Debian testing amd64
gery77
Posty: 22
Rejestracja: czw kwie 04, 2013 11:28 am

Re: Autoukrywanie wierszy

Post autor: gery77 »

Musi być makro.
Ale możesz opisać swoją metodę przy użyciu autofiltra?
Libre Office 5.1.5.2
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Autoukrywanie wierszy

Post autor: belstar »

To samo o czym pisał Minio, tylko że makrem.

Kod: Zaznacz cały

Sub Filter()
	Dim oSheet     
	Dim oFilterDesc
	Dim oFields(0) As New com.sun.star.sheet.TableFilterField
	oSheet = ThisComponent.getSheets().getByIndex(0)
	oFilterDesc = oSheet.createFilterDescriptor(True)
	oFields(0).Field = 1
	oFields(0).IsNumeric = false
	oFields(0).StringValue = "-"
	oFields(0).Operator = com.sun.star.sheet.FilterOperator.NOT_EQUAL
	oFilterDesc.setFilterFields(oFields())
	oFilterDesc.ContainsHeader = True
	oSheet.filter(oFilterDesc)
End Sub
LibreOffice 5.1.2.2 Ubuntu 16 LTS
gery77
Posty: 22
Rejestracja: czw kwie 04, 2013 11:28 am

Re: Autoukrywanie wierszy

Post autor: gery77 »

Jest prawie ok.
Tylko że ma to dotyczyć zakresu tylko i wyłącznie:B3 do B102
Ważne jest też aby makro było przyporządkowane do konkretnego arkusza.
Libre Office 5.1.5.2
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Autoukrywanie wierszy

Post autor: belstar »

Kod: Zaznacz cały

Sub Filter()
	Dim oSheet     
	Dim oFilterDesc
	Dim oFields(0) As New com.sun.star.sheet.TableFilterField
	oSheet = ThisComponent.getSheets().getByName("wycena")
	oCell = oSheet.getCellRangeByName("B3:B102")
	oFilterDesc = oCell.createFilterDescriptor(True)
	oFields(0).Field = 1
	oFields(0).IsNumeric = false
	oFields(0).StringValue = "-"
	oFields(0).Operator = com.sun.star.sheet.FilterOperator.NOT_EQUAL
	oFilterDesc.setFilterFields(oFields())
	oSheet.filter(oFilterDesc)
End Sub
LibreOffice 5.1.2.2 Ubuntu 16 LTS
gery77
Posty: 22
Rejestracja: czw kwie 04, 2013 11:28 am

Re: Autoukrywanie wierszy

Post autor: gery77 »

Nie działa zakres ("B3:B102"), reszta chyba jest ok.
Przy okazji jak można prosić o kod makra do operacji odwrotnej czyli odkrywania tych wierszy?
Libre Office 5.1.5.2
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Autoukrywanie wierszy

Post autor: belstar »

gery77 pisze:Nie działa zakres ("B3:B102")
Wyjaśnij o co chodzi.
gery77 pisze:Przy okazji jak można prosić o kod makra do operacji odwrotnej czyli odkrywania tych wierszy

Kod: Zaznacz cały

Sub RemoveFilter()
  Dim oSheet
  Dim oFilterDesc
  
  oSheet = ThisComponent.getSheets().getByName("wycena")
  oFilterDesc = oSheet.createFilterDescriptor(True)
  oSheet.filter(oFilterDesc)
End Sub
LibreOffice 5.1.2.2 Ubuntu 16 LTS
gery77
Posty: 22
Rejestracja: czw kwie 04, 2013 11:28 am

Re: Autoukrywanie wierszy

Post autor: gery77 »

belstar pisze:
gery77 pisze:Nie działa zakres ("B3:B102")
Wyjaśnij o co chodzi.
Wpisana "-" w komórkę np. B2 lub B103 też zostaje ukryta a nie powinna.
Libre Office 5.1.5.2
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Autoukrywanie wierszy

Post autor: belstar »

Dzieje się tak bo filtr działa dla całej kolumny. Inne rozwiązanie w załączniku.
Załączniki
kalkulacja.ods
(24.06 KiB) Pobrany 170 razy
LibreOffice 5.1.2.2 Ubuntu 16 LTS
ODPOWIEDZ