String mit If-Bedingung auslesen

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

Moderator: Moderatoren

Uli_Neu
*
Beiträge: 12
Registriert: Mi, 13.08.2008 16:50

String mit If-Bedingung auslesen

Beitrag von Uli_Neu »

Hallo!

Das folgende Makro funktioniert nicht.

Kann mir jemand helfen?

sub Testmakro
Dim BKBPruef as string
Dim BKBKontrolle as boolean
'in Zelle B119 steht "ja"
BKBPruef = ThisComponent.currentcontroller.activesheet.getCellRangeByName("$B$119").string

If BKBPruef = "ja" Then
BKBKontrolle = True
Else
BKBKontrolle = False
End If

msgbox "BKBPruef im Modul LangBerKUH2008_3 lautet: " & BKBPruef
msgbox "BKB Kontrolle: " &BKBkontrolle

'Auch wenn der Eintrag in Zelle B119
' "ja" lautet und die erste Meldung das
' auch so anzeigt
' zeigt die zweite Meldung in OpenOffice,
' dass BKBKontrolle = False ist.
'Wie kann das?

'Muss man in OpenOffice Zeichenfolgen
'anders abfragen, indem bspw. der ASCII-Code
'verwendet wird?

end sub

Grüße
Uli_neu
mumpel
****
Beiträge: 133
Registriert: So, 22.08.2004 05:27
Wohnort: Lindau (B)
Kontaktdaten:

Re: String mit If-Bedingung auslesen

Beitrag von mumpel »

Hallo!

Ich kann keinen Fehler entdecken, funktioniert bei mir fehlerfrei. Hast Du auch die Groß- und Kleinschreibung beachtet?

Eine kleine Bitte. Schreibe Deine Beiträge bitte nicht in Starbasic, sondern direkt im Beitragsfenster. Code bitte in den Codetag. Das sieht dann im Beitrag besser aus. Siehe FAQ.

Windows 7 Home Premium (auf Acer Desktop PC)
Windows 8 Professional (auf Microsoft Surface Pro 3).
MSO 365 Home Premium
LibreOffice 4.2.
F-Secure Internet Security
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: String mit If-Bedingung auslesen

Beitrag von komma4 »

Uli_Neu hat geschrieben:' zeigt die zweite Meldung in OpenOffice,
' dass BKBKontrolle = False ist.

Kann ich nicht bestätigen (OOo 2.3.1/WinXP).

Code läuft wie erwartet: Zellinhalt ja dann TRUE, sonst FALSE
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Uli_Neu
*
Beiträge: 12
Registriert: Mi, 13.08.2008 16:50

Re: String mit If-Bedingung auslesen

Beitrag von Uli_Neu »

Hallo!

Das Makro "haargenau so geschrieben"
funktioniert auch auf dem Laptop nicht
und zeigt trotz erster Meldung "ja" in
der zweiten Meldung "false" an.
Woran kann sowas liegen?

Ich martere mir ebenfalls den Kopf

Schöne Grüße
Uli_Neu
mumpel
****
Beiträge: 133
Registriert: So, 22.08.2004 05:27
Wohnort: Lindau (B)
Kontaktdaten:

Re: String mit If-Bedingung auslesen

Beitrag von mumpel »

Bist Du sicher, dass das Ja in der Zelle klein geschrieben ist und nicht groß? Wenn das Ja groß geschrieben ist, dann bleibt Deine Boolean-Variable False, da hier zwischen Groß- und Kleinschreibung unterschieden wird. Versuche mal die folgende Zeile: If BKBPruef = "ja" or BKBPruef = "Ja" Then

Windows 7 Home Premium (auf Acer Desktop PC)
Windows 8 Professional (auf Microsoft Surface Pro 3).
MSO 365 Home Premium
LibreOffice 4.2.
F-Secure Internet Security
Uli_Neu
*
Beiträge: 12
Registriert: Mi, 13.08.2008 16:50

Re: String mit If-Bedingung auslesen

Beitrag von Uli_Neu »

Hallo und Danke für Eure Hilfe.

Es muss wohl irgendwie an der Datei selbst liegen.

In einer anderen Datei kopiert funktioniert das
Makro einwandfrei.

Ich versuche den Fehler zu finden und poste
das Ergebnis hier.

Grüße
Uli_Neu
Uli_Neu
*
Beiträge: 12
Registriert: Mi, 13.08.2008 16:50

Re: String mit If-Bedingung auslesen

Beitrag von Uli_Neu »

Hallo!

Ich glaube, der Fehler ist gefunden.

In der Tabelle war die Zelle mit dem Eintrag "ja"
als Zahl formatiert.

Scheinbar deshalb konnte der Basic-Code darauf
nicht als string zugreifen.

Gar nicht so einfach, darauf zu kommen.

Grüße
Uli_Neu
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: String mit If-Bedingung auslesen

Beitrag von komma4 »

Nein, das kann es nicht sein (getestet mit OOo 2.4.1/Linux).

Ich vermute, dass vielleicht ein Leerzeichen mit in der Zelle ist.

Teste mit

Code: Alles auswählen

MsgBox "Länge der Zelle: " & LEN( BKBPruef )
oder nutze bei der Auswertung des Inhalts TRIM( BKBPruef )
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Uli_Neu
*
Beiträge: 12
Registriert: Mi, 13.08.2008 16:50

Re: String mit If-Bedingung auslesen

Beitrag von Uli_Neu »

Hallo Winfried!

Doch - genau daran liegt es.
Ich habe mir die größere Tabelle
vorgenommen und u. a. die Zelle B119
(war wohl während der Bearbeitung in Excel
mal auf Zahl formatiert gewesen) als Text
umformatiert. ... und jetzt klappt das Makro.

Keine Leerstelle, keine Groß- und Kleinschreibung.

In MS-Excel hatte das nie ein Problem verursacht.

Trotzdem schönen Dank und viele Grüße
Uli_Neu
mumpel
****
Beiträge: 133
Registriert: So, 22.08.2004 05:27
Wohnort: Lindau (B)
Kontaktdaten:

Re: String mit If-Bedingung auslesen

Beitrag von mumpel »

1. Auch bei mir funktioniert das Makro unabhängig von der Formatierung. Ob Zahl oder Text, es funktioniert immer.

2. Excel ist nicht OOo. Excel erkennt automatisch, ob es ein String oder ein Value ist. Nur unter bestimmten Voraussetzungen muss man in Excel das Argument Text nutzen. In der Regel genügt aber Value. OOo dagegen unterscheidet meist explizit zwischen String (Text) und Value (Zahl).

3. Welche Version hast Du?

Windows 7 Home Premium (auf Acer Desktop PC)
Windows 8 Professional (auf Microsoft Surface Pro 3).
MSO 365 Home Premium
LibreOffice 4.2.
F-Secure Internet Security
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: String mit If-Bedingung auslesen

Beitrag von komma4 »

mumpel hat geschrieben:OOo dagegen unterscheidet meist explizit zwischen String (Text) und Value (Zahl)
Das spielt hier keine Rolle. .getString() holt auch bei einer mit Wert besetzten, als ZAHL formatierten Zelle was raus (Rückgabe ist vom Typ STRING, zeigt aber auch den num. Inhalt).

42, als Zahl formatiert .getString() ergibt 42
39673, als Datum formatiert (Anzeige: 12.08.08), ergibt bei .getString() 39673
ja, als Zahl formatiert, ergibt bei .getValue() Null.

MIt .getString() kommt bei DIr, mumpel, und bei mir eben das heraus, was wir alle drei erwarten.

@Uli
Welche OOo Version?
Welches Dateiformat (ich teste mit *.ods)?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Uli_Neu
*
Beiträge: 12
Registriert: Mi, 13.08.2008 16:50

Re: String mit If-Bedingung auslesen

Beitrag von Uli_Neu »

Hallo!

Es handelt sich bei der von mir bearbeiteten
Datei um eine Excel Arbeitsmappe, die ich in
OpenOffice 2.4.1 als ods-Datei abgespeichert
habe.
Die Zelle B119 enthielt einen Texteintrag "ja",
die Zelle war aber in Excel (warum auch immer)
als Zahl formatiert worden.
Nachdem ich jetzt die Zelle B119 in OpenOffice
als Text formatiert habe, funktioniert das Makro.
An dem Eintrag selbst habe ich nichts geändert.

Ich kann mir das auch nicht wirklich erklären.
Ob das Problem nur auftritt, wenn man Excel-
Dateien im ods-Format speichert? Ich werde mich
des Problems annehmen, aber im Moment fehlt
mir leider die Zeit.

Schönen Dank für Eure Hilfe.
Gruß
Uli_Neu
Uli_Neu
*
Beiträge: 12
Registriert: Mi, 13.08.2008 16:50

Re: String mit If-Bedingung auslesen

Beitrag von Uli_Neu »

Hallo liebe Forum-Gemeinde!

Also ich habe mich noch einmal um das Problem
gekümmert und bleibe dabei.

Eine aus Excel übernommene Datei, die in Zellen,
die in Excel als Zahl (Währung) formatiert worden sind,
Texteinträge enthält, liefert bei folgendem Makro ein
falsches Ergebnis.

Erst nachdem ich die Zellen in OpenOffice 2.4.1. als
Text oder Standard formatiert habe, lief das Makro
korrekt.

Code: Alles auswählen

option explicit
sub TextAuslesen
dim TXT as string
TXT=ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("B68").string
msgbox TXT
if TXT = "ja" Then
	msgbox "Bedingung trifft zu"
else
	msgbox "Bedingung trifft nicht zu"
end if
MsgBox "Länge der Zelle: " & LEN(TXT)
Msgbox "Auswertung des Inhalts: xx" & TRIM(TXT)&"xx"
end sub
Vorher lautet das Ergebnis: ja, Len = 3, Trimm = xxjaxx

Nach Formatierung der Zelle in OpenOffice 2.4.1
- glaubt mir, es wahr kein Leerzeichen in der Zelle -:
ja, Len = 2, Trimm = xxjaxx

Ich kann´s selbst kaum glauben.

Grüße
Uli_Neu
Antworten