aus -> oZelle.Value

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

ulko38
*
Beiträge: 19
Registriert: Do, 01.12.2016 10:56

aus -> oZelle.Value

Beitrag von ulko38 » Gestern 14:14

Hi,

Ich möchte aus einer als Zahl formatierten Zelle aus dem Inhalt = "53.104731N"
nur die Zahlen in die Variable übernehmen.
nLat = 0
nLat = TEIL((oZelle.Value);1;9)
bei der schrittweisen Ausführung wird diese Zeile imer angemeckert "Klammern falsch gesetzt".
Wie muss ich die Zelle ansprechen um den richtigen Wert "53.104731" zu bekommen

Danke schon mal und Grüße ulko

F3K Total
********
Beiträge: 3397
Registriert: Mo, 28.02.2011 17:49

Re: aus -> oZelle.Value

Beitrag von F3K Total » Gestern 15:47

So?

Code: Alles auswählen

oLat = cdbl(Replace(Left(oZelle.String,9),".",","))
D.h. du nimmst die ersten 9 Zeichen des Textes, esetzt den Punkt durch ein Komma und wandelst den sich ergebenden Text dann in eine Double-Zahl um.
Du könntest den Text allerdings beim Import direkt in eine Zahl umwandeln, sähe etwa so aus:
TIS.png
TIS.png (53.55 KiB) 422 mal betrachtet
Dann könntest du den Wert tatsächlich mit

Code: Alles auswählen

oZelle.Value
auslesen.


Gruß R

Toxitom
********
Beiträge: 3637
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: aus -> oZelle.Value

Beitrag von Toxitom » Gestern 16:05

Hey Ulko,

na, da mu
sust Du erst mal einiges erläutern;)
Ich möchte aus einer als Zahl formatierten Zelle aus dem Inhalt = "53.104731N"....
Also, in der Annahme, dass Dein LO/AOO mit deutscher Lokalisierung läuft: Ein Zelle in Calc als "Zahl" formatiert kann den dargestellten Inhalt nicht aufnehmen ! Das ist dann immer ein Text. Erkennbar an dem Punkt sowie dem "N" - beides nichtgültige Zeichen bei Zahlen.

Der Inhalt der Zelle ist also keine Zahl (value) sondern ein "text" (string). Die Foratierung der Zelle spielt dabei im Übrigen keine Rolle (hinsichtlich des Inhalts).

weiter:
nLat = 0
nLat = TEIL((oZelle.Value);1;9)
die Variable nLt erhält zunächst den Wert "0" - wird also intern zu einer Integer-Varaiblen.
Dann rufst Du "Teil()" auf. Was soll das sein? "Teil()" ist eine Calc-Funktion (Deutsche Übersetzung) und funktioniert vielleicht im Claczellen - nicht aber in einem Makro-Programm, zumindest so nicht ;)

Im Übrigen liefert auch "Teil" nur ein String zurück, keinen Wert, und verarbeitet nur strings.

Also, wenn Du ne Zahl (Wert) aus der Zelle zurück haben willst, da musst Du andere Strategien entwickeln.

oZelle.string liefert dir den angezeigten Text der Zelle. Wäre hier richtig. Du kannst auch oZelle.getFormula() wählen, wenn keine Formel in der Zelle steht (dann wird auch der inhalt als String zurückgeliefert.

Den TExt kannst Du dann z.B. mit MID() bearbeiten :
sZellinhalt2 = mid(oZelle.string,1,9)

Beachte dabei: Kommas statt Semikolons.

Nun hättest Du immer noch einen Text (string) - mit dem kannst Du nicht rechnen. Jetzt müsstest Du den Punkt ersetzen mit einem Komma (falls das der Dezimal-Trenner sein sollte und dann die String-Zahl in einen Wert umwandeln:
sZellinhalt2 = replace(sZellinhalt2, ".", ",")
nLat = cDbl(sZellinhalt2)

jetzt würde in der Variablen nLat der Wert 53,104731 stehen, mit dem Du Rechenoperationen durchführen kannst.

Aber ich glaube, Dir fehlen erst einmal Grundkenntnisse der Makro/Basic Programmierung. Arbeite Dich langsam und schrittweise ein :)

VG
Tom

Edit:
F3K hat das treffend in einer Zeile zusammengefasst ;))
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic

ulko38
*
Beiträge: 19
Registriert: Do, 01.12.2016 10:56

Re: aus -> oZelle.Value

Beitrag von ulko38 » Gestern 18:10

Hi und R,
Danke vorab über die schnellen antworten und Vorschläge.
Werde mit beiden einen Versuch Starten.
"Anfänger, ja und zwar ein Totaler. Da wird sich wohl mit meinem Alter (81)leider nichts mehr ändern.
Trotzdem bin ich mit meinem bisherigen Erfolg shr zu frieden.
Hab euch mal ein screenshott bezüglich der Formate gemacht: von wg. Format

posting.php?mode=reply&f=18&t=73813#tabs
Format A1 auch Zahl.

Grüße ulko
Dateianhänge
Ausschn. TCalc-Tabelle.PNG
Ausschn. TCalc-Tabelle.PNG (97.93 KiB) 390 mal betrachtet

Toxitom
********
Beiträge: 3637
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: aus -> oZelle.Value

Beitrag von Toxitom » Gestern 18:23

Hey Ulko,

na, das Alter spielt doch keine Rolle :)) Man ist so jung und fit, wie man sich fühlt... hihi

Zurück zum Thema: Statt mit Makros kannst Du das aber auch direkt mit Formeln lösen:
=WERT(WECHSELN(WECHSELN(A1;"N";"");".";","))


Das schreibst Du in die Zielzelle, A1 wäre dann die Zelle mit dem Ausgangswert. Die Formel kannst Du wie in Calc üblich nach unten "ziehen" - und hast so ne ganze Spalte.

brauchste die Werte später ohne Formel: Spalte kopieren - und nur Werte einfügen. Fertig.

VG
Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic

Antworten