der übersicht wegen.. zeile einfügen.

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

Moderator: Moderatoren

suedfinne
*
Beiträge: 10
Registriert: So, 04.03.2007 21:33

der übersicht wegen.. zeile einfügen.

Beitrag von suedfinne »

hmm habe noch ein kleines problemchen.. habe eine sehr große liste mit rohrleitungsnr. die alle in der spalte a stehen will nu die liste übersichtlicher machen indem wenn zb in zeile 28 eine neue rohrleitungsnr anfängt eine leere zeile eingefügt wird. und das solange text in spalte a steht.
das müste man doch irgendwie mit einem vergleich in spalte a. und dann immer weiter vergleichen und jedesmal wenn ein neuer text in spalte a steht eine leerzeile einfügen.
ist sowas aufwendig in basic?
gruß gunnar
Hömmelmann
****
Beiträge: 119
Registriert: Di, 28.11.2006 19:44
Wohnort: Meppen

Zeilen einfügen

Beitrag von Hömmelmann »

Ich gehe davon aus, dass in der Spalte A (Rohrleitungsnummer) ein numerischer Wert steht. Z.B.
1
1
1
2
2
3
3 u.s.w.

mit dem folgenden Code wird bei einer neuen Nummer eine Leerzeile eingefügt, falls keine vorhanden ist. Das Makro läuft bis zum Antreffen von zwei Leerzeilen.

sub RohrNummern
dim merknr as long
dim zeile as long

doc=thiscomponent
rn=doc.sheets(0)
zeile=1
merknr=rn.getcellbyposition(0,zeile).value
do until merknr = 0
if rn.getcellbyposition(0,zeile).value > 0 and rn.getcellbyposition(0,zeile).value <> merknr then
rn.rows.insertbyindex(zeile,1)
zeile = zeile + 1
merknr=rn.getcellbyposition(0,zeile).value
else
zeile = zeile + 1
end if
if rn.getcellbyposition(0,zeile).value = 0 then merknr = rn.getcellbyposition(0,zeile + 1).value
loop
end sub


Probiers mal aus.

Gruß, Friedhelm
suedfinne
*
Beiträge: 10
Registriert: So, 04.03.2007 21:33

Beitrag von suedfinne »

nein das geht leider net... setzt keine leerzeilen.. aber das liegt vielleicht dran das die rohrnr. zb wie folgt heißen:
42B221-CIPV-01-H05-50
42B221-CIPV-01-H05-50
42B221-CIPV-01-H05-50
42B411-VEW-01-H05-50
42B411-VEW-01-H05-50
42B411-VEW-01-H05-50
42B411-VEW-01-H05-50
42B411-VEW-01-H05-50
42B411-VEW-01-H05-50
42B411-VEW-01-H05-50
42B411-VEW-02-H05-40
42B411-VEW-02-H05-40
42B411-VEW-02-H05-40
42B411-VEW-02-H05-40
42B411-VEW-02-H05-40
42P222-CIPR-01-H05-40
42P222-CIPR-01-H05-40
42P222-CIPR-01-H05-40
Karolus
********
Beiträge: 7517
Registriert: Mo, 02.01.2006 19:48

Beitrag von Karolus »

Hallo Gunnar

Ersetze mal in Friedhelms Makro alle 'value' durch 'string' und in der ersten
if .... Zeile ersetze '>0' durch '<> ""'

Gruß Karo
suedfinne
*
Beiträge: 10
Registriert: So, 04.03.2007 21:33

Beitrag von suedfinne »

es gibt wenigstens keine fehlermeldung aber es fügt eine leerzeile nach der anderen ohne aufzuhören. aber ich hoffe das ich es richtig umgesetzt habe das makro lautet jetzt:


sub RohrNummern
dim merknr as long
dim zeile as long

doc=thiscomponent
rn=doc.sheets(0)
zeile=1
merknr=rn.getcellbyposition(0,zeile).string
do until merknr = 0
if rn.getcellbyposition(0,zeile).string <>"" and rn.getcellbyposition(0,zeile).string <> merknr then
rn.rows.insertbyindex(zeile,1)
zeile = zeile + 1
merknr=rn.getcellbyposition(0,zeile).string
else
zeile = zeile + 1
end if
if rn.getcellbyposition(0,zeile).string = 0 then merknr = rn.getcellbyposition(0,zeile + 1).string
loop
end sub
Karolus
********
Beiträge: 7517
Registriert: Mo, 02.01.2006 19:48

Beitrag von Karolus »

Hallo Gunnar

Sorry, das umschreiben auf Textformat ist doch etwas schwieriger, folgendes sollte laufen:

Code: Alles auswählen

sub RohrNummern
dim z as long
doc=thiscomponent
rn=doc.sheets(0)
z = 0
do until rn.getcellbyposition(0,z).string = ""
	z = z + 1
loop 
z = z - 1
for z = z to 1 step (-1)
	if rn.getcellbyposition(0,z).string <> rn.getcellbyposition(0,z-1).string then
		rn.rows.insertbyindex(z,1)
	end if
next z
end sub
Gruß Karo
Hömmelmann
****
Beiträge: 119
Registriert: Di, 28.11.2006 19:44
Wohnort: Meppen

Beitrag von Hömmelmann »

Hallo ihr,

ich melde mich hier noch mal kurz zu Wort. Der von mir erstellte Code auf String-Bearbeitung umgebaut sieht wie folgt aus:

sub RohrNummern
dim merknr as string
dim zeile as long

doc=thiscomponent
rn=doc.sheets(0)

zeile=1
merknr=rn.getcellbyposition(0,zeile).string
do until merknr = ""
if rn.getcellbyposition(0,zeile).string <> "" and rn.getcellbyposition(0,zeile).string <> merknr then
rn.rows.insertbyindex(zeile,1)
zeile = zeile + 1
merknr=rn.getcellbyposition(0,zeile).string
else
zeile = zeile + 1
end if
if rn.getcellbyposition(0,zeile).string = "" then merknr = rn.getcellbyposition(0,zeile + 1).string
loop
end sub

Der Vorteil dieser Variante liegt darin, dass es hier ohne Probleme möglich ist, den Code mehrfach über die Tabelle laufen zu lassen und es werden auch nachträglich angefügte Zeilen (also hinter einem bereits strukturierten Teil) noch in das gewünschte Format gebracht.

Gruß, Friedhelm
Antworten