der übersicht wegen.. zeile einfügen.

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: der übersicht wegen.. zeile einfügen.

von Hömmelmann » Do, 22.03.2007 13:48

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

von Karolus » Do, 22.03.2007 11:08

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

von suedfinne » Mi, 21.03.2007 22:42

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

von Karolus » Mi, 21.03.2007 21:59

Hallo Gunnar

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

Gruß Karo

von suedfinne » Mi, 21.03.2007 20:11

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

Zeilen einfügen

von Hömmelmann » Mi, 21.03.2007 10:37

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

der übersicht wegen.. zeile einfügen.

von suedfinne » Di, 20.03.2007 20:03

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

Nach oben