Zeilen ausblenden und einblenden

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Peter Z.
Beiträge: 4
Registriert: Mi, 06.12.2006 20:38

Zeilen ausblenden und einblenden

Beitrag von Peter Z. »

Hallo liebe Community,

ich bin vor kurzem komplett auf Linux umgestiegen, nun ist es an der Zeit alte Makros umzuschreiben. Um damit mal einzusteigen habe ich hier ein einfaches Script... so sieht es nach dem Import von Excel in OO aus.
Den Printbefehl habe ich auskommentiert, so bringt er mir zumindest
keine Fehlermeldung mehr. Es kommt zwar keine Fehlermeldung mehr, die Funktion bleibt aber aus.... :wink:

Ich nehme an, dass er den Syntax nur scheinbar gut findet.

Code: Alles auswählen

Rem Attribute VBA_ModuleType=VBADocumentModule
Option VBASupport 1
Private Sub CommandButton1_Click()
 Dim iRowL As Integer, iRow As Integer
   iRowL = Cells(Rows.Count, 4).End(xlUp).Row
   For iRow = 1 To iRowL
      If Cells(iRow, 4).Value = 0 Then
         Rows(iRow).Hidden = True
      End If
   Next iRow
   'ActiveSheet.PrintPreview
   'Rows.Hidden = False
End Sub

Private Sub CommandButton2_Click()
Rows.Hidden = False
End Sub



Für jede Hilfe bin ich dankbar!! :P

Gruß,
Peter
kannenklaus
*****
Beiträge: 319
Registriert: Mi, 14.12.2005 08:08
Wohnort: freising - oder dort, wo das bier herkommt

Beitrag von kannenklaus »

hallo peter,

sag mal genauer was du tun willst (welche zellen sollen ausgeblendet werden etc.)

grüße

klaus
Karolus
********
Beiträge: 7517
Registriert: Mo, 02.01.2006 19:48

Beitrag von Karolus »

Hallo Peter und Klaus

Wenn ich das richtig lese sollen da Zeilen ausgeblendet werden, wenn in Spalte E ein Nullwert steht.

Code: Alles auswählen

Sub HideBlankRows
oDoc = thisComponent
osheet = odoc.sheets(0)

for i = 0 to 100
oCell = osheet.getCellByPosition(4, i)
if oCell.value = 0 then
oCell.rows.isVisible = false
else oCell.rows.isVisible = true
end if
next

End Sub
Gruß Karo
Peter Z.
Beiträge: 4
Registriert: Mi, 06.12.2006 20:38

Beitrag von Peter Z. »

ui das ging ja schnell vielen Dank Karolus!

Du schreitest jetzt nur bis Zeile 100 ab, kann man die tatsächlich benutzte
Zeilenzahl ermitteln?
Peter Z.
Beiträge: 4
Registriert: Mi, 06.12.2006 20:38

Beitrag von Peter Z. »

der Richtigkeit muss ich jetzt anfügen, dass ich einen Fehler bei der Buttonzuordnung gefunden habe. D.h. der VBA-Support funktioniert! Die Funktion wurde doch korrekt übersetzt, und funktioniert. Spricht etwas dagegen sie zu verwenden?
Karolus
********
Beiträge: 7517
Registriert: Mo, 02.01.2006 19:48

Beitrag von Karolus »

Hallo Peter

Wenn der VBA-Code bei dir funktioniert, dann verwende ihn doch !
Darf man fragen mit welcher Spezialversion von OOo-basic dir das gelingt ?

Gruß Karo
kannenklaus
*****
Beiträge: 319
Registriert: Mi, 14.12.2005 08:08
Wohnort: freising - oder dort, wo das bier herkommt

Beitrag von kannenklaus »

hallo peter,
Du schreitest jetzt nur bis Zeile 100 ab, kann man die tatsächlich benutzte
Zeilenzahl ermitteln?
du musst einen cursor erzeugen, der bis zum ende der letzten zeile geht und diesen wert einer variablen übergeben. in u.g. beispiel sind dies die variablen dblAnf für die erste zeile und dblEnde für die letzte zeile.

Code: Alles auswählen

Dim oSheet as object, oCur as object
Dim dblAnf as double, dblEnde as double
oSheet = thisComponent.CurrentController.getActiveSheet'dein aktives Blatt
oCur =oSheet.createCursorbyRange(oSheet.getCellRangeByName("A1"))
oCur.gotoStartofUsedArea(true)
oCur.getRangeAddress.startRow
dblAnf = oCur.getRangeAddress.startRow 'Index der ersten Zeile

oCur.gotoEndofUsedArea(true)
oCur.getRangeAddress.endRow
dblEnde = oCur.getRangeAddress.endRow 'Index der letzten Zeile
grüße

klaus
Peter Z.
Beiträge: 4
Registriert: Mi, 06.12.2006 20:38

Beitrag von Peter Z. »

Hallo Klaus, vielen dank für die Lösung. Ich werde beide Versionen mal testen. Allerdings scheint mir iRowL = Cells(Rows.Count, 4).End(xlUp).Row
ungleich praktischer.

Karo> Keine Spezialversion. Paketinstallation unter ubunutu per adept.
kannenklaus
*****
Beiträge: 319
Registriert: Mi, 14.12.2005 08:08
Wohnort: freising - oder dort, wo das bier herkommt

Beitrag von kannenklaus »

hallo peter,
Allerdings scheint mir iRowL = Cells(Rows.Count, 4).End(xlUp).Row
ungleich praktischer.
excel bietet da einfach mehr objekte mit methoden und eigenschaft. der vorteil bei oo basic ist, das nicht alles in einem objekt gekapselt ist und der lerneffekt insges. größer ist.

grüße

klaus
Antworten