Strona 1 z 1

[SOLVED] Pominięcie wiersza na wydruku

: pn lut 11, 2013 12:28 pm
autor: 12345
Witam, mam dokument który posiada 14 wierszy zaczynających się w komórce A19. Zależy mi na tym aby program pomijał te wiersze, jeżeli nie są one wypełnione, na wydruku oraz przy eksportowaniu do pdfa. Przykładowo jest wypełnionych 5 wierszy od A19 do A24, reszta wierszy niewypełnionych pozostaje niewidoczna.

Re: Pominięcie wiersza na wydruku

: pt lut 15, 2013 9:44 am
autor: 12345
Witam ponownie, w załączniku znajdują się pliki obrazujące z czym mam problem.
Zależy mi aby program ukrył wiersz który w komórce obok (kolumnie A) nie ma wpisanej cyfry, bądź pokazał jeżeli cyfra się tam pojawi. Dodam że w komórkach LP jest już wpisana funkcja PODSTAW i jest zależna od innej tabeli.

Re: Pominięcie wiersza na wydruku

: pt lut 15, 2013 12:33 pm
autor: Jan_J
We właściwościach stylów komórek (Format → Komórka → Ochrona → Wydruk oraz F11 → Style komórek → ppm: Modyfikuj → ...) możesz wybrać [x] Ukryj na wydruku.
Zrób nowy styl komórek Pomiń, tak by miał ustawioną tę właściwość.
Dla wiersza, który chcesz pominąć, ustaw Formatowanie warunkowe z odpowiednim warunkiem, którego spełnienie wymusi zastosowanie stylu Pomiń.
Alternatywna metoda polegałaby na użyciu funkcji STYL() w wyrażeniu warunkowym, ale ten sposób dotyczy tylko komórek z formułami, i na dodatek wymaga modyfikacji formuł.

Re: Pominięcie wiersza na wydruku

: pt lut 15, 2013 4:03 pm
autor: 12345
Niestety brak takich opcji w moim OpenOffice 3.4.1, mogę ukryć komórkę czy wiersz na wydruku ale pozostaje ona pusta a nie ukryta.

Re: Pominięcie wiersza na wydruku

: pt lut 15, 2013 4:11 pm
autor: Jan_J
Bo to tak działa. Arkusz nie jest generatorem dokumentów o dowolnym układzie. Wysokość jest atrybutem wiersza, a nie komórki. Ustawienie wysokości na zero za pośrednictwem rozwiązań typu Formatowanie warunkowe albo ustawienie stylu jest więc nawet w teorii niewykonalne.

Możesz natomiast oprogramować (nawet formułami) przygotowanie obszaru wydruku, który by spełniał Twoje wymagania, ale dane pobierałby z komórek niesformatowanych (lub sformatowanych “niezobowiązująco”).

Re: Pominięcie wiersza na wydruku

: pn lut 18, 2013 11:32 am
autor: 12345
Wygląda na to że mój problem rozwiązałoby takie makro jak w tym przypadku http://www.excelforum.pl/topics3/makro- ... vt6071.htm. Jednak nie wiem jak takie makro napisać w OpenOffice.

Re: Pominięcie wiersza na wydruku

: pn lut 18, 2013 7:22 pm
autor: Jan_J
W LO 4.0 to makro prawie działa. Prawie, bo topornie i powoli, i nie sczytuje właściwości Value z przycisku.
Przykro mi, ale niestety nie mam teraz czasu, żeby zajmować się podobnymi robótkami.

Re: Pominięcie wiersza na wydruku

: pn lut 18, 2013 10:36 pm
autor: belstar
Zmodyfikowałem to makro tak żeby tylko działało w Calcu. Do pełni szczęścia wymaga pozbycia się wywołań VBA z Excela. Jak ci to nie wystarcza to napisz, w wolnej chwili pomogę.

Re: Pominięcie wiersza na wydruku

: wt lut 19, 2013 1:03 pm
autor: 12345
Dzięki, działa. Pozwoliłem sobie trochę zmienić makro pod siebie zmieniając jedynie kolumnę na 1 i dodając spację w definiowaniu komórki - gdyż wcześniej formułę w komórce traktowało jako komórkę wypełnioną.
Jeszcze tylko jedno "ale" przycisk obsługujący makro znajduje się w innym arkuszu ("Zmienne") niż tabela która znajduje się w arkuszu "Oferta". Co muszę dodać by to działało?

Re: Pominięcie wiersza na wydruku

: wt lut 19, 2013 11:31 pm
autor: belstar
Masz tu przerobione makro już bez Excelowych instrukcji. Przycisk możesz wstawić w jakim chcesz arkuszu. Do przycisku przypisz to makro (ukrywane są wiersze z arkusza Oferta testowana jest kolumna A.

Kod: Zaznacz cały

Sub ukryj_pokaz(oEv)

Dim Doc As Object
Dim Sheet As Object
 
Doc = ThisComponent
Sheet = Doc.Sheets.getByName("Oferta")
koniec = getCountA(Sheet)
Etyk = oEv.source.model.Label
For i = 0 To koniec - 1
If Sheet.getCellByPosition(1, i).String = "" Then
   If Etyk = "Ukryj" Then
    Wiersz = Sheet.Rows().getByIndex(i)
    Wiersz.IsVisible = false
   ElseIf Etyk ="Pokaż" Then
     Sheet.getRows.getByIndex(i).IsVisible = true
   End If
End If
Next i
	if oEv.source.model.Label = "Ukryj" then
		oEv.source.model.Label = "Pokaż"
	Else
		oEv.source.model.Label = "Ukryj"
	End If
End Sub
Function getCountA(Arkusz)
	oFunct = createUnoService( "com.sun.star.sheet.FunctionAccess" )
	oRange = arkusz.getCellRangeByName("A1:A5000")
	getCountA = oFunct.callFunction("COUNTA" , ARRAY(oRange)) 
End Function

Re: Pominięcie wiersza na wydruku

: czw lut 21, 2013 9:45 am
autor: 12345
Dzięki, u mnie działa z tym że z małą zmianą.

Kod: Zaznacz cały

Sub ukryj_pokaz(oEv)

Dim Doc As Object
Dim Sheet As Object

Doc = ThisComponent
Sheet = Doc.Sheets.getByName("Oferta")
koniec = getCountA(Sheet)
Etyk = oEv.source.model.Label
For i = 0 To koniec - 1
If Sheet.getCellByPosition(0, i).String = " " Then
   If Etyk = "Ukryj" Then
    Wiersz = Sheet.Rows().getByIndex(i)
    Wiersz.IsVisible = false
   ElseIf Etyk ="Pokaż" Then
     Sheet.getRows.getByIndex(i).IsVisible = true
   End If
End If
Next i
   if oEv.source.model.Label = "Ukryj" then
      oEv.source.model.Label = "Pokaż"
   Else
      oEv.source.model.Label = "Ukryj"
   End If
End Sub
Function getCountA(Arkusz)
   oFunct = createUnoService( "com.sun.star.sheet.FunctionAccess" )
   oRange = arkusz.getCellRangeByName("A1:A5000")
   getCountA = oFunct.callFunction("COUNTA" , ARRAY(oRange))
End Function