aus einer Zelle ein Teilstring auslesen
Moderator: Moderatoren
aus einer Zelle ein Teilstring auslesen
Hi folks
Ich habe noch keine große Erfahrung mit Objekt, APIs, UNO Programierung.
Nun wollte ich gerne wissen, welcher Befehl bzw. Prozedur notwendig ist, aus einer vorhanden Tabelle von einer Zelle ein String auszulesen.
Beispiel: Ich habe eine Spalte (D) wo z.B. 11/61 GB 2, 01/62 D 29, 02/62 USA 2 dieser Text in den einzelnen Zeilen drin steht.
Nun würde ich gerne das jede Zeile in der Spalte nach einer Zeichenkette untersucht wird z.B D 1, wird der String gefunden soll der Wert (in unserem Beispiel die eins) in der selben Zeile 3 Spalten weiter reingeschrieben werden, als nächstes oder vorher wäre noch eine Überprüfung notwendig wenn z.B. in einer Zelle 2 D's enthalten sind z.B. 06/61 USA 8, 12/61 GB 2, 02/62 D 12 , 05/62 I 1, RE 11/75 GB 5, RE 02/76 D 13 soll der niedrigste Wert genommen werden.
Es wäre nett wenn Ihr mich bei meinem Vorhaben unterstützt, es sind 32.000 Zeilen und es ist nicht nur D sondern noch USA; GB; NL; I; F; S; und CH
Ich habe mir (Anfänger) gedacht das man(frau) mit den Befehlen Left; Right; Mid; Len; InStr , eine Abfrageschleife konstruiert oder sowas ähnliches. Lieg ich da in etwa richtig.
Übrigens, die Liste kann man sich bei oldiehitparade.de herunterladen.
Vielen Dank im Voraus
Collector
Ich habe noch keine große Erfahrung mit Objekt, APIs, UNO Programierung.
Nun wollte ich gerne wissen, welcher Befehl bzw. Prozedur notwendig ist, aus einer vorhanden Tabelle von einer Zelle ein String auszulesen.
Beispiel: Ich habe eine Spalte (D) wo z.B. 11/61 GB 2, 01/62 D 29, 02/62 USA 2 dieser Text in den einzelnen Zeilen drin steht.
Nun würde ich gerne das jede Zeile in der Spalte nach einer Zeichenkette untersucht wird z.B D 1, wird der String gefunden soll der Wert (in unserem Beispiel die eins) in der selben Zeile 3 Spalten weiter reingeschrieben werden, als nächstes oder vorher wäre noch eine Überprüfung notwendig wenn z.B. in einer Zelle 2 D's enthalten sind z.B. 06/61 USA 8, 12/61 GB 2, 02/62 D 12 , 05/62 I 1, RE 11/75 GB 5, RE 02/76 D 13 soll der niedrigste Wert genommen werden.
Es wäre nett wenn Ihr mich bei meinem Vorhaben unterstützt, es sind 32.000 Zeilen und es ist nicht nur D sondern noch USA; GB; NL; I; F; S; und CH
Ich habe mir (Anfänger) gedacht das man(frau) mit den Befehlen Left; Right; Mid; Len; InStr , eine Abfrageschleife konstruiert oder sowas ähnliches. Lieg ich da in etwa richtig.
Übrigens, die Liste kann man sich bei oldiehitparade.de herunterladen.
Vielen Dank im Voraus
Collector
Die Menschen fangen immer erst mit Fehlern an, bevor sie sich bessern können. (Mengtse)
Hey Collector,
also, so ganz verstehe ich die Aufgabenstellung noch nicht.
OK, der Zellwert kann ausgelesen werden, dan hast due den String. Den kannst du nun "manipulieren", also z.b. nahc bestimmten Zeichen hin untersuchen.
Nur, nach was willsit du suchen? Nach "D"? nach "D 1" ? Oder nach "D n" , wobei "n" eine beliebige Zahl ist?
Schleifen brauchen feste Start und Zielwerte, zu indest aber Abbruchbedingungen.
Kannst du näher spezifizieren, was genau du suchst?
Und was soll dann in die dritte Spalte geschrieben werden? Nur das "D ?" oder der komplette String?
Also, den Zellinhalt erhälst du über folgende Schleife (für die 30.000 Datensätze..)
Es wäre im Übrigen zu prüfen, ob du dein Ergebnis nicht auch direkt mit Formeln hinbekommst. Aber da fehlen mir noch ein paar Infos.
Gruss
Thomas
also, so ganz verstehe ich die Aufgabenstellung noch nicht.
OK, der Zellwert kann ausgelesen werden, dan hast due den String. Den kannst du nun "manipulieren", also z.b. nahc bestimmten Zeichen hin untersuchen.
Nur, nach was willsit du suchen? Nach "D"? nach "D 1" ? Oder nach "D n" , wobei "n" eine beliebige Zahl ist?
Schleifen brauchen feste Start und Zielwerte, zu indest aber Abbruchbedingungen.
Kannst du näher spezifizieren, was genau du suchst?
Und was soll dann in die dritte Spalte geschrieben werden? Nur das "D ?" oder der komplette String?
Also, den Zellinhalt erhälst du über folgende Schleife (für die 30.000 Datensätze..)
Code: Alles auswählen
sub zellinhalt
oDoc = thisComponent
oSheet = oDoc.sheets(0) 'erstes Tabellenblatt
for i = 1 to 30000 ' Zeile 1 bis 30000
sZellString = oSheet.getCellRangeByName("D" & i).string
REM Hier kannst du jetzt etwas mit dem Zellinhalt machen
next
end sub
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Hi Toxitom
Als erstes mal vielen Dank für den Code, damit kann ich schon mal anfangen zu testen.
Sorry, für meine ungenauen Fragen.
Ich möchte in der Spalte "D" jede Zeile nach den Zeichenketten ( D 1; D 2; D 3; ... D 100) untersuchen, wenn in der gesuchten Zeile bzw. Zelle etwas gefunden wurde soll er den Wert (Zahl) drei Spalten weiter reinschreiben.
Dies soll er auch mit den Zeichenketten USA 1; USA 2; ... USA 100 sowie GB n; NL n; usw. tun.
Mein Ziel ist es, in der Liste für jedes Land eine Spalte mit den dazugehörigen Werten zu bekommen. Zur Zeit sind die Werte bzw. Peakplatzierungen der Länder in einer Zelle und auch noch in unterschiedlicher Reihenfolge und noch doppelt.
Doch mit deinem Programmcode ist ein Anfang gemacht.
Achso die Abruchbedingung bzw. Fortführung des Suchprogramms wäre eine leere Zeile.
Da ich OOo Basic lernen möchte, ist die Liste ein schönes Experimentierfeld und gleichzeitig würde es mir bei meiner vorhandenen Sammlung helfen.
Collector
Als erstes mal vielen Dank für den Code, damit kann ich schon mal anfangen zu testen.
Sorry, für meine ungenauen Fragen.
Ich möchte in der Spalte "D" jede Zeile nach den Zeichenketten ( D 1; D 2; D 3; ... D 100) untersuchen, wenn in der gesuchten Zeile bzw. Zelle etwas gefunden wurde soll er den Wert (Zahl) drei Spalten weiter reinschreiben.
Dies soll er auch mit den Zeichenketten USA 1; USA 2; ... USA 100 sowie GB n; NL n; usw. tun.
Mein Ziel ist es, in der Liste für jedes Land eine Spalte mit den dazugehörigen Werten zu bekommen. Zur Zeit sind die Werte bzw. Peakplatzierungen der Länder in einer Zelle und auch noch in unterschiedlicher Reihenfolge und noch doppelt.
Doch mit deinem Programmcode ist ein Anfang gemacht.
Achso die Abruchbedingung bzw. Fortführung des Suchprogramms wäre eine leere Zeile.
Da ich OOo Basic lernen möchte, ist die Liste ein schönes Experimentierfeld und gleichzeitig würde es mir bei meiner vorhandenen Sammlung helfen.
Collector
Die Menschen fangen immer erst mit Fehlern an, bevor sie sich bessern können. (Mengtse)
Hey Collector,
ahh, OK, na gut, das geht wirklich nur mit Makros
Wenn ich das richtig verstanden habe, gibt es deine Codes nur bis 100 (also D 1 bis D 100, etc), dafür aber mit verschiedenen Ländern? Zwischen Land und Zahl steht immer exakt ein Leerzeichen?
Ich nehme jetzt an, dass nur die Codes "D" drei Spalten später eintragen soll, wahrscheinlich USA dann in Spalte 4, NL in 5 u.s.w ?
Eingetragen werden soll nicht "D 1" sondern nur "1", aber als Zahl (Wert)?
Die leere Zelle bestimmt das Ende der Liste?
OK, das wäre alles lösbar - auch wenn ein solches Makro aufgrund der sehr langen Schleifenbedingungen (1-100) (D, USA, NL, GB ...) (Zeile 1- 30000) eine ziemliche Zeit zum Laufen bräuchte.
Wenn die Annahmen oben soweit stimmen, helfe ich dir gerne beim Codeschreiben
Gruss
Thomas
ahh, OK, na gut, das geht wirklich nur mit Makros

Wenn ich das richtig verstanden habe, gibt es deine Codes nur bis 100 (also D 1 bis D 100, etc), dafür aber mit verschiedenen Ländern? Zwischen Land und Zahl steht immer exakt ein Leerzeichen?
Ich nehme jetzt an, dass nur die Codes "D" drei Spalten später eintragen soll, wahrscheinlich USA dann in Spalte 4, NL in 5 u.s.w ?
Eingetragen werden soll nicht "D 1" sondern nur "1", aber als Zahl (Wert)?
Die leere Zelle bestimmt das Ende der Liste?
OK, das wäre alles lösbar - auch wenn ein solches Makro aufgrund der sehr langen Schleifenbedingungen (1-100) (D, USA, NL, GB ...) (Zeile 1- 30000) eine ziemliche Zeit zum Laufen bräuchte.
Wenn die Annahmen oben soweit stimmen, helfe ich dir gerne beim Codeschreiben

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
OptionExplici
Hi Toxitom
Du hast es richtig erfasst.
Die Liste kannst Du Dir bei http://www.oldiehitparade.de downloaden.
(hoffe ich darf die Seite erwähnen, ansonsten kann man sie ja löschen)
Nun zu Deinem Programm
Ich habe es ausprobiert und soweit auch verstanden.
Doch wollte ich etwas ändern bzw. gleichzeitig mein Kommentar neben hinschreiben, um zu sehen ob ich die einzelnen Schritte verstanden habe. Dabei bin ich auf ein Fehler von mir gestossen bzw. Unverständnis.
Meine Fragen:
1. wenn ich OptionExplicit aktiviere bekomme ich eine Fehlermeldung vom Interpreter "Basic Syntaxfehler Erwartet: Sub" angezeigt
2. Sind die Kommentare soweit richtig?
Übrigens vielen Dank für Deine Hilfe, ich kann sie sehr gut gebrauchen, gerade als Anfänger.
Collector
1. Edit: Option_Explicit ist Option Explicit geworden und kleine Fehler im Text, zusätzlich ein Kommentar zu Next angehängt.
Du hast es richtig erfasst.
Die Liste kannst Du Dir bei http://www.oldiehitparade.de downloaden.
(hoffe ich darf die Seite erwähnen, ansonsten kann man sie ja löschen)
Nun zu Deinem Programm
Ich habe es ausprobiert und soweit auch verstanden.
Doch wollte ich etwas ändern bzw. gleichzeitig mein Kommentar neben hinschreiben, um zu sehen ob ich die einzelnen Schritte verstanden habe. Dabei bin ich auf ein Fehler von mir gestossen bzw. Unverständnis.
Code: Alles auswählen
Option Explicit 'Hier erzwinge ich, das alle Variablen die in der
'Prozedur vorkommen explizit deklariert(ausdrück-
'lich bekannt gemacht)werden müssen. Um Fehler zu
'vermeiden und die Lesbarkeit zu erhöhen, sollte
'man sich angewöhnen die Variablen am Anfang zu
'deklarieren, ist aber nicht zwingend notwendig.
'Der Befehl muss am Anfang eines Programm stehen
sub Zellen_einlesen 'Als nächstes geben wir einen Namen für die
'Prozedur an. Eine Prozedur beginnt mit Sub Prozedur-
'name und endet mit end Sub.
'als nächstes werden die einzelnen Variablen deklariert
Dim i as integer 'wird als Zählvarible für die erste For-Next Schleife benutzt
Dim oDoc as object '????? Hier habe ich meine Probleme
Dim osheet as object '????? bzw. kann ich es noch nicht erklären.
Dim sZellString as string '????? Die Variable sZellString wird als Zeichenkette deklariert
oDoc = thisComponent 'Hier wird auf das aktuelle Dokument zu-
'gegriffen
oSheet = oDoc.sheets(0) 'das erste Tabellenblatt wird benutzt
for i = 1 to 30000 'eine For-Next Schleife mit der Variable i
'wird durchlaufen.
sZellString = oSheet.getCellRangeByName("D" & i).string
'Das Zeichenstring sZellString übernimmt die
'Zeichenkette von der Zelle D(i)
REM ----- Als nächstes wird der String nach Kriterien untersucht -----
next ' Dies ist das Ende der ersten For-Next Schleife wenn die Variable i
' den Wert 30000 angenommen hat
end sub
1. wenn ich OptionExplicit aktiviere bekomme ich eine Fehlermeldung vom Interpreter "Basic Syntaxfehler Erwartet: Sub" angezeigt
2. Sind die Kommentare soweit richtig?
Übrigens vielen Dank für Deine Hilfe, ich kann sie sehr gut gebrauchen, gerade als Anfänger.
Collector
1. Edit: Option_Explicit ist Option Explicit geworden und kleine Fehler im Text, zusätzlich ein Kommentar zu Next angehängt.
Zuletzt geändert von Collector am Sa, 25.11.2006 16:02, insgesamt 1-mal geändert.
Die Menschen fangen immer erst mit Fehlern an, bevor sie sich bessern können. (Mengtse)
Und was erwartest Du sonst wenn Du ein beliebiges Wort in den Code schreibst und das nicht als Kommentar kennzeichnest?1. wenn ich OptionExplicit aktiviere bekomme ich eine Fehlermeldung vom Interpreter "Basic Syntaxfehler Erwartet: Sub"
das ist eine korrekte Anweisung:
Code: Alles auswählen
Option Explicit
und das ein beliebiges Wort:
Code: Alles auswählen
OptionExplicit
Gruß
Stephan
Danke Stephan,
für die Belehrung (Korrektur), das ich das Wort bzw. den Befehl falsch geschrieben habe.
Collector
P.S.
Wie schwierig ist es, dem Urteil eines anderen etwas zu unterbreiten,
ohne sein Urteil durch die Weise, wie man es ihm unterbreitet,
zu verderben! (Blaise Pascal)
für die Belehrung (Korrektur), das ich das Wort bzw. den Befehl falsch geschrieben habe.
Collector
P.S.
Wie schwierig ist es, dem Urteil eines anderen etwas zu unterbreiten,
ohne sein Urteil durch die Weise, wie man es ihm unterbreitet,
zu verderben! (Blaise Pascal)
Die Menschen fangen immer erst mit Fehlern an, bevor sie sich bessern können. (Mengtse)
Hey Collector,
OK, deine Kommentare sind soweit OK. Ich füge mal zwei hinzu:
Soweit dazu. Nun müsst allerdings der Code umgebaut werden - entsprechend den gemeinsam herausgefundenen Randbedingungen. Warum? weil es logische Abschnitte gibt, die als eigene Prozeduren zusammengefasst werden - das erleichtert die Lesbarkeit.
Zum Testen solltest du die eine Datei zusammenbauen, die nicht mehr als 10 Zeilen drin hat - dann sieht man eher etwas.
Zum Code:
Mein Vorschlag wäre zwei bis drei eigenständige Prozeduren:
die erste: Inizialisierung globaler Variablen
die zweite: Schleife über alle Zeilen und Auslesen des Inhalts-Strings
die dritte: Prüfung des Inhaltsstrings und bei Bedarf schreiben des Teilstrings in eine seperate Zelle.
Aufgrund der seperaten Prozeduren benötigen wir globale Variable, die werden außerhalb (ganz oben) definiert. Und damit es schön einfach wird, auch noch eine Startprozedur ganz oben - dann kannst du es auch in der IDE starten (PS: ich lass die Kommentare jetzt weg
)
So, das ist der Anfang. Nicht perfekt, aber diene Basis. Was fehlt:
1. Du musst den Suchstring noch besser definieren - jetzt wird auch "D 1" gefunden, wenn dort "D 12" steht. Also anpassen und verbessern.
Außerdem wolltest du je noch eine Kontrolle, ob evt. schon ein höherer Wert in der Zielzelle steht - dann soll nix eingetragen werden.
Aber ein paar Herausforderungen brauchst du ja auch noch
Gruss
Thomas
OK, deine Kommentare sind soweit OK. Ich füge mal zwei hinzu:
Code: Alles auswählen
Dim oDoc as object 'die Varaible nimmt später das Dokumentenobjekt auf
Dim osheet as object 'diese Variable das Tabellenblatt als Objekt
Zum Testen solltest du die eine Datei zusammenbauen, die nicht mehr als 10 Zeilen drin hat - dann sieht man eher etwas.
Zum Code:
Mein Vorschlag wäre zwei bis drei eigenständige Prozeduren:
die erste: Inizialisierung globaler Variablen
die zweite: Schleife über alle Zeilen und Auslesen des Inhalts-Strings
die dritte: Prüfung des Inhaltsstrings und bei Bedarf schreiben des Teilstrings in eine seperate Zelle.
Aufgrund der seperaten Prozeduren benötigen wir globale Variable, die werden außerhalb (ganz oben) definiert. Und damit es schön einfach wird, auch noch eine Startprozedur ganz oben - dann kannst du es auch in der IDE starten (PS: ich lass die Kommentare jetzt weg

Code: Alles auswählen
Option Explicit
dim oSheet as object
sub start 'Startmakro
init
Lese_Zeile
end sub
sub init
oSheet = thisComponent.sheets(0)
end sub
sub Lese_Zeile
dim i as long, sZellString as String
i = 1 'erste Zeile als Startzeile
do until oSheet.getCellRangeByName("D" & i).string = ""
sZellString = oSheet.getCellRangeByName("D" & i).string
check_Inhalt(sZellString, i)
i = i+1
loop
end sub
sub check_Inhalt(sStr as string, iZeile as long)
dim aLand() 'Länderkennzeichen
dim aSpalte() 'Einzutragende Spalten
dim n as integer, j as integer
aLand = Array("D", "USA")
aSpalte = array("G", "H")
for n = 1 to 5 'später auf 100 setzen!
for j = 0 to uBound(aLand)
if instr(sStr, " " & aLand(j) & " " & n ) then
oSheet.getCellRangeByName(aSpalte(j) & n).string = aLand(j) & " " & n
end if
next j
next n
end sub
1. Du musst den Suchstring noch besser definieren - jetzt wird auch "D 1" gefunden, wenn dort "D 12" steht. Also anpassen und verbessern.
Außerdem wolltest du je noch eine Kontrolle, ob evt. schon ein höherer Wert in der Zielzelle steht - dann soll nix eingetragen werden.
Aber ein paar Herausforderungen brauchst du ja auch noch

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Hi Toxitom
Danke für den Code, werde ihn mal studieren bzw. entschlüsseln.
Habe noch etwas gefunden bzw. gelesen im Handbuch um Dokumente zu durchsuchen.
Suchen von Textteilen
In vielen Fällen gilt es, einen Text nach einen bestimmten Begriff zu durchsuchen und
die entsprechende Trefferstelle zu bearbeiten. Hierzu bieten alle StarOffice-Dokumente
eine spezielle Schnittstelle, die stets nach dem gleichen Prinzip arbeitet: Vor einem
Suchvorgang muss zunächst ein so genannter SearchDescriptor erstellt werden, der definiert,
was StarOffice in einem Dokument suchen soll. Ein SearchDescriptor ist ein Objekt, das den Dienst
com.sun.star.util.SearchDescriptor unterstützt und über die Methode
createSearchDescriptor eines Dokuments erzeugt werden kann:
Dim SearchDesc As Object SearchDesc = Doc.createSearchDescriptor
Nachdem der SearchDescriptor erzeugt wurde, übernimmt er den zu suchenden Text:
SearchDesc.searchString=′any text′
Von seiner Funktion lässt sich der SearchDescriptor am ehesten mit dem
Such-Dialog von StarOffice vergleichen. Ähnlich wie das Suchfenster lassen sich auch
im SearchDescriptor-Objekt die für eine Suche notwendigen Einstellungen
vornehmen.
ist das etwas womit man arbeiten kann oder ist das für mich noch zu starker Tobak
Collector
Danke für den Code, werde ihn mal studieren bzw. entschlüsseln.
Habe noch etwas gefunden bzw. gelesen im Handbuch um Dokumente zu durchsuchen.
Suchen von Textteilen
In vielen Fällen gilt es, einen Text nach einen bestimmten Begriff zu durchsuchen und
die entsprechende Trefferstelle zu bearbeiten. Hierzu bieten alle StarOffice-Dokumente
eine spezielle Schnittstelle, die stets nach dem gleichen Prinzip arbeitet: Vor einem
Suchvorgang muss zunächst ein so genannter SearchDescriptor erstellt werden, der definiert,
was StarOffice in einem Dokument suchen soll. Ein SearchDescriptor ist ein Objekt, das den Dienst
com.sun.star.util.SearchDescriptor unterstützt und über die Methode
createSearchDescriptor eines Dokuments erzeugt werden kann:
Dim SearchDesc As Object SearchDesc = Doc.createSearchDescriptor
Nachdem der SearchDescriptor erzeugt wurde, übernimmt er den zu suchenden Text:
SearchDesc.searchString=′any text′
Von seiner Funktion lässt sich der SearchDescriptor am ehesten mit dem
Such-Dialog von StarOffice vergleichen. Ähnlich wie das Suchfenster lassen sich auch
im SearchDescriptor-Objekt die für eine Suche notwendigen Einstellungen
vornehmen.
ist das etwas womit man arbeiten kann oder ist das für mich noch zu starker Tobak

Collector
Die Menschen fangen immer erst mit Fehlern an, bevor sie sich bessern können. (Mengtse)
Hey Collector,
Viele Wege führen zum Ziel, nur bezeifel ich, ob du damit dieses schneller erreichst.
Der Suchallgorythmus markiert dir die gefundenen Stellen - und ersetzt sie bei Bedarf. Nur - das bringt dich nicht weiter. Du müstest also Position für Position anspringen, die Zeileninformation auslesen und dann entsprechend die Spalten schreiben...
Aber - probier es, du kannst nur lernen
Gruss
Thomas
Klar kannst du auch damit arbeitenst das etwas womit man arbeiten kann ...

Viele Wege führen zum Ziel, nur bezeifel ich, ob du damit dieses schneller erreichst.
Der Suchallgorythmus markiert dir die gefundenen Stellen - und ersetzt sie bei Bedarf. Nur - das bringt dich nicht weiter. Du müstest also Position für Position anspringen, die Zeileninformation auslesen und dann entsprechend die Spalten schreiben...
Aber - probier es, du kannst nur lernen

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Danke Toxitom,
werde erst mal Dein Programm enträtseln, kann aber einige Tage dauern
Wie der Zufall es will, hilft mir der Autor (Gruppe ???) von ISBN 3-89842-657-2 dabei etwas über Makros zu lernen.
(gerade gelesen)
Da hat es sich schon gelohnt das Buch zu kaufen
bin aber noch am Anfang vom Lernprozess, deshalb dauert das auch etwas länger mit dem kapieren, besonderst mit dem Kapitel 4.
Aber hier werden Sie geholfen
Collector
werde erst mal Dein Programm enträtseln, kann aber einige Tage dauern


Da hat es sich schon gelohnt das Buch zu kaufen

Aber hier werden Sie geholfen

Collector
Die Menschen fangen immer erst mit Fehlern an, bevor sie sich bessern können. (Mengtse)
Hi folks
habe nun das Rohgerüst
Denke das ist ausreichend unterteilt und übersichtlich, nun kommt der schwerer Teil. (:) Dank Toxitom ist ja der Anfang schon gemacht
)
Btw. die Prozeduren bekommen evtl. noch Parameter mitgeliefert
Noch eine Frage wenn ich alle Variablen im Kopfteil deklariere (öffentliche bzw. lokale Variable) dann kann ich doch "init" Prozedur? weglassen.
Oder übersehe ich dabei etwas bzw. verbaue ich mir da etwas in Bezug auf Haltbarkeit etwas.
Gruß
Collector
Edit 1: habe gerade bei der Bearbeitung festgestellt das die Prozeduren inander verschachtelt sind bzw. nicht linear benutzte werden. Also dies sind nur Module die in dem Macro vorkommen.
Hoffe ich habe die Begriffe Module und Macro nicht vertauscht
habe nun das Rohgerüst
Code: Alles auswählen
sub Hauptprogramm 'Hier soll das Programm bzw. die Prozedur mit seinen
'Unterprogrammen (Prozeduren oder Funktionen starten)
init 'In dieser Prozedur sollen die Variablen deklariert werden
hole_Zeichenkette 'Mit dieser Zeile wird die Prozedur hole_Zeichenkette
'aufgerufen.
vergl_Zeichenkette 'Diese Prozedur soll die Zeichenkette auf Teilstrings
'untersuchen.
setze_Wert_in_Zelle 'als letztes wird dieses Programm das Ergebnis in
'einer definierten bzw. errechneten Zelle mit einem
'bestimmten Wert (Zahl) geschrieben.
end sub 'Hier endet das Hauptprogramm

Btw. die Prozeduren bekommen evtl. noch Parameter mitgeliefert
Noch eine Frage wenn ich alle Variablen im Kopfteil deklariere (öffentliche bzw. lokale Variable) dann kann ich doch "init" Prozedur? weglassen.
Oder übersehe ich dabei etwas bzw. verbaue ich mir da etwas in Bezug auf Haltbarkeit etwas.
Gruß
Collector
Edit 1: habe gerade bei der Bearbeitung festgestellt das die Prozeduren inander verschachtelt sind bzw. nicht linear benutzte werden. Also dies sind nur Module die in dem Macro vorkommen.
Hoffe ich habe die Begriffe Module und Macro nicht vertauscht

Die Menschen fangen immer erst mit Fehlern an, bevor sie sich bessern können. (Mengtse)
Hey Collector,
Gruss
Thomas
Nein. Die Varaiblen werden zwar im Kopfteil deklariert (also erzeugt) nicht aber mit Werten versehen. Das geschieht erst im Init Teil. Natürlich kannst du - bei nur wenigen Werten - diese auch am Anfang der ersten Prozedur mit INhalten füllen - das bleibt dir überlassen - und dann könntest du die Init Prozedur weglassen.Noch eine Frage wenn ich alle Variablen im Kopfteil deklariere (öffentliche bzw. lokale Variable) dann kann ich doch "init" Prozedur? weglassen.
Das müssen sie auch nicht. Wichtig ist eigentlich nur etwas: Eine Prozedur soll einen Arbeitsschritt abdecken - wie oft der letztendlich aufgerufen wird und woher, das spielt keine Rolle. Das ist ja der Sinn der Unterteilungen- immer abgeschlossene Arbeitsschritte definieren und diese dann "recyklen", also so oft wie möglich wiederverwenden - eben zum Beispiel durch die Übergabe von Parametern und die Rücklieferung von Ergebnissen.habe gerade bei der Bearbeitung festgestellt das die Prozeduren inander verschachtelt sind bzw. nicht linear benutzte werden
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Hi Toxitom,
danke, für die Antwort.
Bin fast fertig mit dem entschlüsseln und was für mich am wichtigsten ist, es auch zu verstehen (einigermaßen). Deshalb habe (werde ich) zu fast jeden Schritt mein Kommentar schreiben. Wenn es gestattet ist würde ich es gerne hier reinstellen wenn es fertig ist, für Diskussionen bzw. um ein feedback (Kontrolle) zu erhalten.
Bei den Objekt Variablen hatte ich meine Problem. So wie ich das bis jetzt verstanden habe bzw. einfach ausgedrückt, gebe ich nur an, mit welcher Applikation (internen Funktion) ich arbeiten möchte bzw. benutzen oder öffnen möchte.
Habe ich das richtig (grob) verstanden.
Collector
danke, für die Antwort.
Bin fast fertig mit dem entschlüsseln und was für mich am wichtigsten ist, es auch zu verstehen (einigermaßen). Deshalb habe (werde ich) zu fast jeden Schritt mein Kommentar schreiben. Wenn es gestattet ist würde ich es gerne hier reinstellen wenn es fertig ist, für Diskussionen bzw. um ein feedback (Kontrolle) zu erhalten.
Bei den Objekt Variablen hatte ich meine Problem. So wie ich das bis jetzt verstanden habe bzw. einfach ausgedrückt, gebe ich nur an, mit welcher Applikation (internen Funktion) ich arbeiten möchte bzw. benutzen oder öffnen möchte.
Habe ich das richtig (grob) verstanden.
Collector
Die Menschen fangen immer erst mit Fehlern an, bevor sie sich bessern können. (Mengtse)
Hey Collector,
ja, bring deinen Code dann hier rein. Dann könen wir korrigieren oder richtigstellen
Und das mit den Objektvariablen ist nicht ganz korrekt. Alles, was du in OpenOffice.org tust, basiert auf Objekten. Diese bilden einen "Baum", das heisst, sie sind voneinander abhängig. Jedes Objekt kann unterschiedliche Eigenschaften annehmen (Properties), es unterstützt diverse eingebaute Funktionen (methods) und besitzt auch sonst noch ein paar Möglichkeiten.
Ein solches Objekt kannst du auch einer Varaiblen zuweisen - eben einer Objektvariablen.
Viele Grüße
Thomas
ja, bring deinen Code dann hier rein. Dann könen wir korrigieren oder richtigstellen

Und das mit den Objektvariablen ist nicht ganz korrekt. Alles, was du in OpenOffice.org tust, basiert auf Objekten. Diese bilden einen "Baum", das heisst, sie sind voneinander abhängig. Jedes Objekt kann unterschiedliche Eigenschaften annehmen (Properties), es unterstützt diverse eingebaute Funktionen (methods) und besitzt auch sonst noch ein paar Möglichkeiten.
Ein solches Objekt kannst du auch einer Varaiblen zuweisen - eben einer Objektvariablen.
Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic