Seite 1 von 1

Macro zum ausblenden leerer Zeilen

Verfasst: Di, 25.11.2008 23:07
von god's disciple
Hallo zusammen,
ich habe ein Problem mit einem Formular. In meinem OpenOffice 3.0 habe ich 2 Tabellen angelegt, die eine ist eine Tabelle, in der die Daten für ein ganzes Jahr eingetragen werden, das 2.Tabellenblatt ist quasi der Ausdruck monatsweise. Ich stelle auf der ersten Tabelle ein, welchen Monat ich ausdrucken möchte und per sverweis holt sich die 2.Tabelle dir nötigen Daten, so dass ich dann den Ausdruck habe.
Soweit zu meinem System, mein Problem ist jetzt, dass sich die Anzahl von Personen immer wieder ändern kann in der ersten Tabelle. Dort ist es nicht so schlimm, da ich ein Macro zum sortieren habe, so dass auch auf dem Ausdruck immer die richtige Reihenfolge ist. Nur auf dem Ausdruck, habe ich jetzt genug Sverweise angelegt, dass sie bei einer Änderung in der 1.Tabelle geholt würden, nur habe ich jetzt natürlich einige Leerzeilen in meinem Ausdruck, in denen der Sverweis steht, falls in der Tabelle 1 mal noch ein paar Namen zu kommen, die aber im Moment nicht gebraucht werden. Da ich keine Lust habe immer per Hand die unbenutzten Zeilen zu verstecken habe ich mir ein Macro hier im Forum gesucht und versucht auf meine Gegebenheiten anzupassen, jedoch bekomme ich beim Ausführen des folgenden Macros den Fehler: "Basic-Laufzeitfehler Variable nicht definiert", makiert ist die Stelle im Macro "for zi = 8 to 63".
Das Macro:
Sub Zeilen_ausblenden_bei
with thisComponent.sheets().getbyname("Comprobante")
for zi = 8 to 63
if .getcellbyposition(2,zi).string = "0.00" or .getcellbyposition(2,zi).string = """" then
.rows(zi).isvisible = false
else
.rows(zi).isvisible = true
end if
next
end with
End Sub

Kann mir jemand sagen, woran das Problem liegt, die Tabelle mit dem Ausdruck heisst "Comprobante", die Zeilen die beachtet werden sollen sind 9-64. Ich habe das Macro hier im Forum gefunden, habe aber nicht so viel Ahnung davon, hilft mit das Macro, bei dem was ich möchte, wenn es funktionieren sollte? Ist es ein Problem, dass das Macro nur als Sub in einer Liste von Macros ist (zum Beispiel das zum Namen sortieren ist dabei und funktioniert)?
Ich hoffe ich habe genug Infos gegeben und ihr könnt mir helfen, ich wäre euch sehr dankbar.
Liebe Grüsse

Re: Macro zum ausblenden leerer Zeilen

Verfasst: Di, 25.11.2008 23:36
von Stephan
Kann mir jemand sagen, woran das Problem liegt
Am Anfang des Moduls ist explizite Variablendeklaration festgelegt (Option Explicit), wobei aber anschliessend die Variable zi nirgens deklariert wird

schreibe z.B. vor die Zeile:

Code: Alles auswählen

for zi = 8 to 63
die (zusätzliche) Zeile:

Code: Alles auswählen

Dim zi



Gruß
Stephan

Re: Macro zum ausblenden leerer Zeilen

Verfasst: Mi, 26.11.2008 01:15
von god's disciple
Hey,
vielen Dank schonmal für die Antwort, ich habe deinen Rat befolgt und bekomme auch keine Fehlermeldung mehr, da die Variable ja jetzt deklariert ist.
Nur leider funktioniert es immer noch nicht, er sagt nichts, nur macht leider auch nichts.
Ist ein Fehler im Makro, wenn ich auf der Tabelle "comprobante" anhand der Spalte B entscheiden lassen möchte, dass er die Zeilen versteckt, die zwar den Sverweis drin stehen haben, aber da dieser keinen Namen in Tabelle 1 findet keine Zahl, sondern ein leeres Feld hergibt?
Hier nochmals mein Makro (nach Berichtigung):

Code: Alles auswählen

Sub Zeilen_ausblenden_bei
	with thisComponent.sheets().getbyname("comprobante")
	dim zi
	for zi = 8 to 63
	if .getcellbyposition(2,zi).string = "0.00" or .getcellbyposition(2,zi).string = """" then
	.rows(zi).isvisible = false
	  else
	  .rows(zi).isvisible = true
	end if
	next
end with
End Sub
Vielen Dank

Re: Macro zum ausblenden leerer Zeilen

Verfasst: Mi, 26.11.2008 03:22
von turtle47
Hallo,

mir sind zwei Fehler aufgefallen.

1. Es wird nicht in Spalte "B" gesucht weil

Code: Alles auswählen

if .getcellbyposition(2,zi)
in Spalte "C" sucht.

Richtig ist dann

Code: Alles auswählen

if .getcellbyposition(1,zi)....
weil der Index der Zeilen und Spalten bei Null anfängt.

Also Zelle A1 entspricht Index 0,0.

Wie war das noch mit dem Informatiker, der am Bahnhof vier Koffer abholen soll und anfängt zu zählen:
"Null, eins, zwei und drei. So ein Mist, fehlt schon wieder der vierte Koffer"

2. Es wird nicht nach leeren Zellen gesucht sondern Zellen mit dem Inhalt "" .
Richtig wäre:

Code: Alles auswählen

....string = "" then
Viel Erfolg.

Jürgen

Re: Macro zum ausblenden leerer Zeilen

Verfasst: Mi, 26.11.2008 15:24
von god's disciple
Suuper,
vielen Dank an euch beide, jetzt funktioniert alles einwandfrei... ich muss gestehen, ich habe keinerlei Ahnung von Makros und habs mir nur so zusammen gesucht, deswegen sind mir die wohl doch recht einfachen Fehler nicht aufgefallen :)
Naja, vielen Dank nochmal für eure schnelle Hilfe.
Liebe Grüsse