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 -- -- 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