Seite 1 von 1
der übersicht wegen.. zeile einfügen.
Verfasst: Di, 20.03.2007 20:03
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
Zeilen einfügen
Verfasst: Mi, 21.03.2007 10:37
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
Verfasst: Mi, 21.03.2007 20:11
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
Verfasst: Mi, 21.03.2007 21:59
von Karolus
Hallo Gunnar
Ersetze mal in Friedhelms Makro alle 'value' durch 'string' und in der ersten
if .... Zeile ersetze '>0' durch '<> ""'
Gruß Karo
Verfasst: Mi, 21.03.2007 22:42
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
Verfasst: Do, 22.03.2007 11:08
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
Verfasst: Do, 22.03.2007 13:48
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