Date: prev next · Thread: first prev next last
2013 Archives by date, by thread · List index


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+unsubscribe@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

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.