Seite 1 von 1

String mit If-Bedingung auslesen

Verfasst: Mi, 13.08.2008 17:04
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

Re: String mit If-Bedingung auslesen

Verfasst: Mi, 13.08.2008 17:11
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.

Re: String mit If-Bedingung auslesen

Verfasst: Mi, 13.08.2008 17:15
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

Re: String mit If-Bedingung auslesen

Verfasst: Mi, 13.08.2008 18:16
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

Re: String mit If-Bedingung auslesen

Verfasst: Mi, 13.08.2008 18:24
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

Re: String mit If-Bedingung auslesen

Verfasst: Mi, 13.08.2008 18:32
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

Re: String mit If-Bedingung auslesen

Verfasst: Mi, 13.08.2008 18:52
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

Re: String mit If-Bedingung auslesen

Verfasst: Mi, 13.08.2008 19:18
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 )

Re: String mit If-Bedingung auslesen

Verfasst: Mi, 13.08.2008 20:13
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

Re: String mit If-Bedingung auslesen

Verfasst: Mi, 13.08.2008 20:18
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?

Re: String mit If-Bedingung auslesen

Verfasst: Mi, 13.08.2008 21:37
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)?

Re: String mit If-Bedingung auslesen

Verfasst: Do, 14.08.2008 11:18
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

Re: String mit If-Bedingung auslesen

Verfasst: Fr, 15.08.2008 00:52
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