Schleifen nur in Makros?

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

da_jackster
**
Beiträge: 28
Registriert: Mo, 08.09.2008 09:57

Schleifen nur in Makros?

Beitrag von da_jackster »

Hallo Leute,

ich suche gerade nach einer einfachen Möglichkeit, Felder durchzugehen und den Inhalt in eine bestimmte Form zu bringen. Meiner Meinung nach lässt sich das, was ich machen möchte nur mit Schleifen anstellen:

Das ist die Ausgangsform (hier nur ein Beispiel):

11 | START | ALLES | HAT | EIN | STOP
12 | START | ENDE | NUR | DIE | WURST | STOP
13 | START | HAT | ZWEI |STOP

Und so soll(te) es mal aussehen:

11 | ALLES
11 | HAT
11 | EIN
12 | ENDE
12 | NUR
12 | DIE
12 | WURST
13 | HAT
13 | ZWEI

Wäre an sich vieleicht ja kein großes Problem aber wie man oben sehen kann, können zwischen START und STOP variabel viele Werte liegen. Und da sind wir beim Kernpunkt: Wie erkläre ich Calc, dass er die Werte so lange "in Form" bringt, bis er auf ein STOP trifft? Geht das wirklich nur über Makros? Hat jemand zufällig nen gutes Tutorial zur Hand oder ein ähnliches Makro? Ich bin in Basic nicht der Beste! :?
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Schleifen nur in Makros?

Beitrag von Karolus »

Hallo
Infos zur Basic-Programmierung findest du im ersten Post der Basic-abteilung
Folgendes Makro überträgt die Daten vom 1. Tabellenblatt ins 2.Blatt nach deinem angegebenen Muster, die Ende-Bedingungen sind: Der Text "STOP" in der Schleife über die Zeile, und eine leere Zelle in der ersten Spalte der äusseren Schleife.

Code: Alles auswählen

Sub Datensaetze_transformieren
odoc = thiscomponent
insheet = odoc.sheets(0) '1.Tabellenblatt
outsheet = odoc.sheets(1) '2.Tabellenblatt
isp = 2 'startindex 3.Spalte
do until insheet.getcellbyposition(0,iz).string = ""
	do until insheet.getcellbyposition(isP,iz).string = "STOP"
		outsheet.getcellbyposition(0,oz).formula =_
		insheet.getcellbyposition(0,iz).string
		outsheet.getcellbyposition(1,oz).formula =_
		insheet.getcellbyposition(isP,iz).string
		isP = isP + 1
		oz = oz + 1
	loop  
	isP = 2 'zurücksetzen Startindex
	iz = iz + 1 'hochzählen Zeilenindex
loop 

End Sub
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
da_jackster
**
Beiträge: 28
Registriert: Mo, 08.09.2008 09:57

Re: Schleifen nur in Makros?

Beitrag von da_jackster »

Genau das habe ich gebraucht! Fettes Danke! :-)

Nur noch eine Frage: Kann man das Makro nicht auch an einen Button oder sowas dranhängen damit es dann "auf Knopfdruck" aktiviert wird? So ist es grad etwas umständlich!
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Schleifen nur in Makros?

Beitrag von Karolus »

Hallo
http://www.ooowiki.de/MakrosMitEinemKlick
Du kannst auch eine Schaltfläche ins Dokument setzen über (->Ansicht->Symbolleisten->Formular-Steuerelemente) und dieses noch im Entwurfsmodus im Kontextmenü ->Kontrollfeld-'Ereignisse'--beim Auslösen dem Makro zuweisen.

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Antworten