Am 03.09.2013 11:38, schrieb Wolfgang Jäth:
Am 02.09.2013 18:06, schrieb Günter Fritze:
Hallo zusammen.
Ich habe eine quadratische Tabelle, bei der in jeder Zelle eine Ziffer
stehen soll. Dies will ich prüfen. Jeder Zelleninhalt wird mit
oZelle = oBlatt.getCellByPosition(iI,iJ)
sTmp = oZelle.String
gelesen und mit
iErg = inStr(sZchn,sTmp)
If iErg = 0 Then
auf Ziffer geprüft. Dies funktioniert gut, wenn der zu untersuchende
Zelleninhalt ein unzulässiges Zeichen ist, das Ergebnis ist 0. Aber
wehe, wenn in der zu untersuchenden Zelle garnicts ist, also "". Dann
steht in iErg eine 1,??????? und in sTmp ein "".
Daß sTmp ein Leerstring ist, wenn die Quelle aka der Zellinhalt leer
ist, bedarf wohl keiner weiteren Erklärung, oder? Aber was suchst Du mit
der inStr-Funktion in dem Fall genau? Du suchst, ob in dem zu
durchsuchenden Text (SZchn) ein Leerstring enthalten ist. Und das ist
zwischen jedem einzelnen Zeichen in diesem Text unendlich mal der Fall.
Daher bekommst du als Ergebnis ein TRUE.
Übrigens begehst Du noch einen anderen Denkfehler; wenn nämlich die
Variable sZchn aus z. B. der Zeichenfolge "0123456789" besteht, dann
findet die Funktion auch Werte wie 12, 23, 34 usw. Du solltest also auf
alle Fälle überprüfen, ob die Länge des Zellinhaltes genau 1 ist (und
dann hast Du auch bei einem Leerstring keine Probleme).
Ich würde das folgendermaßen lösen:
| If Len(sTmp) = 1 Then
| iErg = inStr(sZchn,sTmp)
| Else
| iErg = 0
| Endif
| If iErg = 0 Then
Aber warum verhinderst Du nicht einfach von vorn herein, daß da
überhaupt etwas anderes als genau eine Ziffer eingetragen werden kann?
Spalte oder Bereich markieren => Daten => Gültigkeit => Kriterien =>
Zulassen: 'Ganze Zahl' / [X] Leerzeichen zulassen => Daten: 'zwischen'
=> Min: '1' / Max: '0' => Fehlermeldung => [X] Fehlermeldung anzeigen /
Meldungstext: 'Nur ganze Zahlen zwischen 1 und 9 erlaubt' o. ä.
Wolfgang
Hallo!
Vielen Dank.
If Len(sTmp) = 1 Then
Das ist meine Lösung
MfG
Günter
--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme?
http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: http://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert