🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Spalten einer Selektion auslesen

Alles zur Programmierung im LibreOffice.
MaximilianWe
Beiträge: 40
Registriert: So 7. Aug 2011, 22:28

Spalten einer Selektion auslesen

Beitrag von MaximilianWe » Mi 4. Mai 2016, 20:34

Mein Ziel: den manuell seleselektierten Bereich in einer Stringvariablen auslesen und dann die erste Spalte dieses Bereiches in eine variable übernehmen.
Ausgegangen bin ich von diesem Code ( bei Dannenhöfer), aber da ist der Bereich "byName"
coergegeben, ich möchte da die an die Funktion übergebene Variable(aus der oben erwöhnten Selektionsauswertung einsetzen können.

Ich kriegs nicht hin.

    

Code: Alles auswählen

oCalc = thisComponent
     oSheet = oCalc.sheets(0)
     oCellRange = osheet.getCellRangeByName("A1:B5")
'auslesen der Eckpunkte   
     iErsteSpalte = oCellRange.rangeAddress.startColumn
     iErsteZeile = oCellRange.rangeAddress.startRow
     iLetzteSpalte = oCellRange.rangeAddress.EndColumn
     iLetzteZeile = oCellRange.rangeAddress.EndRow
Gruß
Max

balu
* LO-Experte *
Beiträge: 370
Registriert: Mi 1. Jun 2011, 16:21

Re: Spalten einer Selektion auslesen

Beitrag von balu » Mi 4. Mai 2016, 21:59

Nabend,
Funktion soll markierten Bereicdh erkennen und Adresse zurückgeben hat geschrieben: wird wohl saein. Daß man hier mit beliebigen Schimpfwörtern wie "pöpelei" zu tun hat, war mir nicht klar.
Jetzt weiß, ich es. Aber vielleicht kann ich die Bitte äußernm daß mir weitere Konfrontationen mit solchen Antworten erspart bleiben.
Ich habe jetzt auch mal Lust aufs rumpöbeln.
Du postest in verschiedenen Foren unter dem gleichen Namen das gleiche Problem.
Du bekommst Antworten und gehst nicht weiter darauf ein.
Du hast doch schon eine Teilantwort auf deine Frage hier bekommen, in einem anderen Thread von dir. CALC: Makro nach Bedarf starten. Warum arbeitest Du nicht damit?

Und komm mir ja nicht mit irgendwelchen zitaten von Goethe & Co daher, das zieht nicht. Du bist nicht erst seit gestern aktiv in einem Forum unterwegs, und solltest schon ein gewisses Verständnis über Netiquette besitzen und auch was das für dich bedeuten kann, wenn Du in verschiedenen Foren das gleiche Problem zur Diskussion einstellst.


So, und nun zu dem was Du aktuell hier willst, beziehungsweise was dein Problem ist.
Mein Ziel: den manuell seleselektierten Bereich in einer Stringvariablen auslesen und dann die erste Spalte dieses Bereiches in eine variable übernehmen.
Hast Du dich denn jetzt schon mal mit Andrew Pitonyak's Makro Dokument befasst?
Hast Du dir eins von den Tools installiert; entweder XRAY oder MRI?
Ohne eines der genannten Tools wirst Du nicht sehr weit kommen. Sie sind so gesehen ein echtes MUSS, wenn man sich mit der StarBasic Programmierung befassen will.

Ausgegangen bin ich von diesem Code ( bei Dannenhöfer), aber da ist der Bereich "byName"
coergegeben, ich möchte da die an die Funktion übergebene Variable(aus der oben erwöhnten Selektionsauswertung einsetzen können.
Im Thread: CALC: Makro nach Bedarf starten (siehe oben), steht doch schon wie Du den selektierten Bereich bekommst, warum setzt Du das nicht ein?


Wie schon anderen in den anderen Threads von dir ergeht es mir genau so: Ich weiß nicht was Du wirklich vorhast, und werde aus deinen Worten einfach nicht schlau.



Gruß
balu

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: Spalten einer Selektion auslesen

Beitrag von mikele » Mi 4. Mai 2016, 23:10

Hallo,

auch ich werde aus deiner Frage nicht schlau. Übergib (wenn es denn unbedingt sein soll) doch das rangeAddress-Objekt anstelle den komplizierten Weg über eine Stringvariablen zu gehen.
Nebenbei: Über mehrere Threads versuchst du scheibchenweise Lösungen für einzelene Probleme zu bekommen. Es wäre erheblich einfacher, wenn du darstellst, was du eigentlich vorhast bzw. wie dein Code aktuell aussieht. Erfahrungsgemäß lösen sich viele Probleme dabei fast wie von selbst.
Also: Stelle uns eine Musterdatei oder deinen Makrocode zur Verfügung und beschreibe, was du (insgesamt) erreichen willst.
Gruß,
mikele

MaximilianWe
Beiträge: 40
Registriert: So 7. Aug 2011, 22:28

Re: Spalten einer Selektion auslesen

Beitrag von MaximilianWe » Do 5. Mai 2016, 11:01

Ich mache nochmals den Versuch, ob man dieser Formul,ierung ohne Polemik sachlich eine Antwort geben kann. Ich habe bisher leider keine erkannt, was vielleicht an mir liegt.
Deer Code f8unktioniert:

CODE: ALLES AUSWÄHLEN
oCalc = thisComponent
oSheet = oCalc.sheets(0)
oCellRange = osheet.getCellRangeByName("A1:B5")
'auslesen der Eckpunkte
iErsteSpalte = oCellRange.rangeAddress.startColumn
iErsteZeile = oCellRange.rangeAddress.startRow
iLetzteSpalte = oCellRange.rangeAddress.EndColumn
iLetzteZeile = oCellRange.rangeAddress.EndRow

Ich wolltel aber, diesen Code als Sub oder Funktion zusammenfassen (p.e. Sub Auswahl) und ihr für >oCellRange=< in Zeile3 statt den absoluten Wert ("A1:B5") einen string (p.e. $A$5:$C$6")als Parameter übergeben.
Hätte dann so aussehen sollen:

Sub Auswahl (bereich als string)
Calc = thisComponent
oSheet = oCalc.sheets(0)
oCellRange = osheet.getCellRange <xxxxxx(bereich)

iErsteSpalte = oCellRange.rangeAddress.startColumn
iErsteZeile = oCellRange.rangeAddress.startRow
iLetzteSpalte = oCellRange.rangeAddress.EndColumn
iLetzteZeile = oCellRange.rangeAddress.EndRow
end sub

Den Hinweis " was willst Du hier" nehme ich gerne auf und berdanke mich auch dafür, daß man stattdessen nicht "verschwinde" gesagt. Das war rücksichtsvoll. Aber ich habe es kapiert.

Max

balu
* LO-Experte *
Beiträge: 370
Registriert: Mi 1. Jun 2011, 16:21

Re: Spalten einer Selektion auslesen

Beitrag von balu » Do 5. Mai 2016, 13:36

Hallo Max,
Den Hinweis " was willst Du hier" nehme ich gerne auf und berdanke mich auch dafür, daß man stattdessen nicht "verschwinde" gesagt. Das war rücksichtsvoll. Aber ich habe es kapiert.
Nix hast Du kapiert, und folgedessen interpretierst Du Aussagen Falsch.


Aber lassen wir das, bringt eh nix. Back to Toppic.
in Zeile3 statt den absoluten Wert ("A1:B5") einen string (p.e. $A$5:$C$6")als Parameter übergeben.
Was zum Henker soll das heißen "p.e."? Bin kein lateiner, bitte um Erklärung der Abkürzung!

Und jetzt mal etwas zum grundsätzlichen Verständnis.
In einer Formel in einer Zelle macht es einen gewaltigen Unterschied aus, ob man z.B.

Code: Alles auswählen

=SUMME(A1:A10)
oder aber

Code: Alles auswählen

=SUMME($A$1:$A$10)
schreibt. Denn z.B. durch das runterziehen der 1. Formel wird der Zellbereich automatisch angespasst, so dass z.B. hinterher der Zellbereich A11:A20 lauten kann. Während aber der Zellbereich in der 2. Formel immer konstant bleibt beim runterziehen.
So weit ist das ja wohl klar.

Und jetzt kommt das dicke fette
ABER
Aber wenn man sich mit der StarBasic Programmierung befasst, so gilt die vorhin getroffene Aussage überhaupt nicht zu!
Denn: Die Zelladressierung in Basic ist immer ein unveränderlicher String!

Es spielt also absolut überhaupt keine Rolle ob man z.B.

Code: Alles auswählen

.getCellRangeByName("A1:B5")
oder

Code: Alles auswählen

.getCellRangeByName("$A$1:$B$5")
oder aber

Code: Alles auswählen

sZellAdresse = "A1:B5"
.getCellRangeByName( sZellAdresse )
schreibt.
Da ein String in Basic immer ein Text ist, unterliegt er keinen mathematischen Regeln mit dem man rechnen kann. Oder weißt Du was dabei rauskommt wenn man Wasser, Wärme und Geld miteinander multipliziert und anschließend daraus die 2 Wurzel zieht?
Das wird nicht gehen, da die Wörter "Wasser, Wärme und Geld" String (Text) sind.


mikele hat geschrieben: und beschreibe, was du (insgesamt) erreichen willst.
Das kann ich nur noch mal wiederholen.
Und ferner betone ich das was ich schon einmal gesagt habe: XRAY oder MRI und Andrew Pitonyak!



Gruß
balu

MaximilianWe
Beiträge: 40
Registriert: So 7. Aug 2011, 22:28

Re: Spalten einer Selektion auslesen

Beitrag von MaximilianWe » Do 5. Mai 2016, 15:15

Ich trags mal mit Humor und antworte nochmal - ein bißchen anders zur Wahl -
aufwas "willst Du erreichen"? Man ersdare mir aber bitte, statt einer brauchbaren Antwort die Frage Warum, weshalb, wofür, wozu".

1. Die manuell getroffene Auswahl soll erkannt und in einer Variablen vergügbar gemacht werden. (p.e sorry = Z.B:.$A$1:$C$4)
2. Aus dieser Adresse soll die erste und die letzte Spalte (also 0 und 2) in einer variablen verfügbar gemacht werden.
3. Endergebnis: ich habe drei Werte: ( im Beispiel " "$A$1:$C$4", zahl 0 bzw. Zahl 2) und kann mit diesen Werte weiter im Programm arbeiten.
4. Mit "Parameter übergeben" meinte ich, dass die drei Werte wahlweise mit dem Aufruf einer SUB/Funktion übergeben werden können.

Was ich mir allerdings wohl zu Unrecht erhoffte, war u.U. anhand meines Beispielcodes der richtige Code, oder dass man mir sagte, wo in den 500 Seiten Pitoniak die Lösung steht.Dazu habe ich, aber trotz eigener Nachforschung keine Antwort gefunden. Gut war zu viel erwartet. Basta.

Max

als Absolution: Ein verrückter meint immer, die anderen denken falsch.

balu
* LO-Experte *
Beiträge: 370
Registriert: Mi 1. Jun 2011, 16:21

Re: Spalten einer Selektion auslesen

Beitrag von balu » Do 5. Mai 2016, 17:42

balu hat geschrieben: Was zum Henker soll das heißen "p.e."? Bin kein lateiner, bitte um Erklärung der Abkürzung!
Danke für das nicht beantworten einer einfachen Frage. :evil:


1. Die manuell getroffene Auswahl soll erkannt und in einer Variablen vergügbar gemacht werden. (p.e sorry = Z.B:.$A$1:$C$4)
Siehe deinen Thread: CALC: Makro nach Bedarf starten
Da steht schon mal wie Du den Zellbereich mit Blattnamen bekommst. Und wenn Du dich jetzt noch mit XRAY oder MRI befasst, dann dürfte der Rest für diesen Punkt kein Problem darstellen.


Man ersdare mir aber bitte, statt einer brauchbaren Antwort die Frage Warum, weshalb, wofür, wozu
Warum sollen User die mehr Ahnung oder Wissen als Du haben, nicht mal nachfragen was dein Endziel ist. vielleicht gehst Du ja schon jetzt am Anfang deines Codes schon den falschen Weg, oder Du machst dir das alles selber zu schwer. Wenn man das Endziel wüsste, dann könnte man dir ja ein paar nützliche Tipps und Tricks nennen. Aber da Du das ja nicht willst, und wahrscheinlich für einen Geheimdienst oder ähnliches arbeitest, wirst Du wohl noch lange im Dunkeln rumstochern.

Was ich mir allerdings wohl zu Unrecht erhoffte, war u.U. anhand meines Beispielcodes der richtige Code, oder dass man mir sagte, wo in den 500 Seiten Pitoniak die Lösung steht.Dazu habe ich, aber trotz eigener Nachforschung keine Antwort gefunden.
Ahh, gut! Du hast es also.
Eine direkte Lösung wirst Du dort wohl auch nicht finden, aber es wird eigentlich recht gut vermittelt wie die Strukturen für bestimmte Ergebnisse sind. Und ferner, wird dort auch sehr wichtiges grundwissen vermittelt, ohne dessen man nicht weiter kommt in der Programmierung.

Und wenn Du dann noch z.B. MRI einsetzt, bist Du einen großen Schritt weiter.

Code: Alles auswählen

x = ThisComponent.GetCurrentSelection.AbsoluteName
Der vorhin genannte Thread beinhaltet ja diese Codezeile. Aber weißt Du überhaupt was da geschieht, und warum das so dasteht wie es ist?

Das ist eine strukturierte "Befehlszeile" (mal ganz simpel und lapidar ausgedrückt).
.GetCurrentSelection.AbsoluteName bauen auf ThisComponent auf. Erst kommt ThisComponent, und dann kann man mittels GetCurrentSelection weitere Informationen auslesen, wie z.B. AbsoluteName. Und was passiert wenn Du beispielsweise AbsoluteName weglässt?

Code: Alles auswählen

iErsteSpalte = oCellRange.rangeAddress.startColumn
Hattest du bei Dannenhöfer "abgeschrieben". Aber weißt Du auch warum das so geschrieben wird?

Ohne Grundwissen wie eine Strukturierte Befehlszeile aufgebaut wird, bist Du hoffnungslos aufgeschmissen.

Was ich mir allerdings wohl zu Unrecht erhoffte, war u.U. anhand meines Beispielcodes der richtige Code
Na wenn du jetzt meinen Tipp nicht gesehen oder erkannt hast, dann musst Du wohl deine Brille entweder putzen oder eine neue kaufen. :lol:



Gruß
balu

MaximilianWe
Beiträge: 40
Registriert: So 7. Aug 2011, 22:28

Re: Spalten einer Selektion auslesen

Beitrag von MaximilianWe » Fr 6. Mai 2016, 22:28

Haoolo balu,
das wird nun wirklich niveaulos . Persönliche Anzüglichkeiten hatte ich als festen Bestandteil dieses Forums nicht erwartet,
Deine Bemerkung zu meinem Vorschlag, warum schreibt niemand, wie der Code für die Änderung gemäß meinem ausführölich geschriebenen Beispiel aussehen müßte? Als Antwort der Tipp Pitoniak, Xray oder was sonst und Programmieren lernen,ist jedenfaslls keine konktreter Lösungsvorschlag.
Ich möchte jetzt jedenfalls das Thema und meine Beteiligung in diesem Forum beenden. Es war trotzdem, wenn auch nicht in der Sache, "lehr"-reich.

Max

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: Spalten einer Selektion auslesen

Beitrag von mikele » Sa 7. Mai 2016, 13:00

Hallo,
ich weiß nicht wo deine Empfindlichkeit herkommt ...
Du hast alle Antworten bekommen, die du brauchst, und musst sie nun auf deine Situation anpassen. Da du nach wie vor nicht damit herausrückst, was du eigentlich vorhast, können alle hier nur raten. Auch ich ahne nur schemenhaft wo die Reise hingehen soll. Jetzt vermute ich, das du jetzt glaubst, doch alles geliefert zu haben ... aber so ist es nun mal nicht!
Gruß,
mikele

MaximilianWe
Beiträge: 40
Registriert: So 7. Aug 2011, 22:28

Re: Spalten einer Selektion auslesen

Beitrag von MaximilianWe » Sa 7. Mai 2016, 18:43

auf deie Frage, wie ich den Code ( mindestens) in Zeile 3 ändern müßte, damit ich der Funktion zur Rückgabe der Spalte (also 0 für A...usw.) erhalte, lese ich folgendes:
+++++++++++++++++++++++++++++++++++++++++
sZellAdresse = "A1:B5"
.getCellRangeByName( sZellAdresse )

schreibt.
Da ein String in Basic immer ein Text ist, unterliegt er keinen mathematischen Regeln mit dem man rechnen kann. Oder weißt Du was dabei rauskommt wenn man Wasser, Wärme und Geld miteinander multipliziert und anschließend daraus die 2 Wurzel zieht?
Das wird nicht gehen, da die Wörter "Wasser, Wärme und Geld" String (Text) sind.
++++++++++++++++++++++++++++++++++++++++++
ist das E die Lösung ?
Und zur Feststellung, man erkenne nicht was ich will.
Ich habe eigentlich wiederholt gesagt:
Ich brauche ein Makro, das für unterschiedliche Bereichsauswahlrn für die jeweils erste Spalte deren Stellenwert ( 0-xx für A -XXX) zurückgibt.

Sähe dann z.B.für eine Funktion- nennen wir sie " spaltenr" - im Prinzip so aus:
Sub Main
.
.
bereich= "$C$5: $F$8". <<<<<<<< so oder wie auch immer ermittelt
x=spaltenr ( bereich) <<<<<< Aufruf der Funktion
....
....
End Sub

function spaltenr(auswahl as string)
oRange = get.........(auswahl) <<<<<<< als B espiel in Anlehnung an meinen Ausgangscode
erstespalte=...... <<<<<<< als B espiel in Anlehnung an meinen Ausgangscode
spaltennr=erstespalte <<<<<<< als B espiel in Anlehnung an meinen Ausgangscode
End function

ganz einfache Antwortmöglichkeit:
geht so xxxxx . Ich will kein Programmierer für Open Office werden, habe meine Makrosammlung mit dem Makrorecorder zusammengebaut (angepaßt) und will meine Büroarbeiten mit OO erledigen. In diesem hier genannten Fall habe ich keine Chance, weiter zu kommen. Das wars.

Max













,





ob i
:


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten