Hallo Rolf, ich glaube ich habe verstanden. In (ausgeblendeter) Celle C2 für Celle B2 (wo die Kundennummer eingetragen wird) =wenn( B2<>"" ; valid(B2) ; "" ) Ist das so richtig? Gruß Achim -- openSUSE 11.4 KDE – Frei sein! Plattform-Version 4.6.00 (4.6.0) "release 6" LibreOffice 3.3.4 OOO340m1 (Build:502) --- Am Sonntag, 27. Januar 2013, 20:15:35 schrieb Achim Pabel:
Hallo Rolf, Dein Code ist wohl ein absolutes "Sahnehäuptchen" - das wird niemand abstreiten können. Aber wie wird er eingebaut (1) und wie wird dieser aufgerufen? Automatisch - oder per Icon? Wie verbinde ich den Code mit den einzelnen Spalten B2 bis B101 ? Ich (und sicherlich auch andere) bin (sind) sehr gespannt auf Deine nächste Mail ! Gruß Achim (1) Ich meinde damit nicht: Copy + Paste in Menü::Extras::Makros verwalten::Libre Office Basic ...Ich habe deine Anmerkung, dass du kein Basic sprichst, gesehen. Aber wie wäre es mit einem fertigen Makro? ;-) Das hat den Vorteil, dass die Formel =valid(...) nur eine Zelle in deinem Spreadsheet belegt. Außerdem bekommt der Anwender einen Hinweis darauf, wo in der Eingabe der erste Fehler ist. ~~Ab hier Basic-Code~~~~~~~~~ ' Rolf Lochbühler, 2013-01-27 Option Explicit Public Function valid( ByVal str As String ) As String Dim char As String Dim EXPECT_LEN As Integer Dim i As Integer Dim msg As String Dim STR_LEN As Integer EXPECT_LEN = Len( "XX-XXXXX-9999-X99-N999" ) STR_LEN = Len( str ) If STR_LEN < EXPECT_LEN Then msg = "Eintrag " & CStr(EXPECT_LEN - STR_LEN) & " Zeichen zu kurz." ElseIf STR_LEN > EXPECT_LEN Then msg = "Eintrag " & CStr(EXPECT_LEN - COUNT) & " Zeichen zu lang." Else i = 0 msg = "" While msg = "" And i < STR_LEN i = i + 1 char = Mid(str,i,1) Select Case i Case 1, 2, 4, 5, 6, 7, 8, 15: If char < "A" Or char > "z" Then msg = "Erwarte Buchstabe statt " & char & " an Stelle " & CStr(i) & "." End If Case 3, 9, 14, 18: If char <> "-" Then msg = "Erwarte Bindestrich statt " & char & " an Stelle " & CStr(i) & "." End if Case 10, 11, 12, 13, 16, 17, 20, 21, 22: If char < "0" Or char > "9" Then msg = "Erwarte Ziffer statt " & char & " an Stelle " & CStr(i) & "." End If Case 19: If char <> "N" Then msg = "Erwarte N statt " & char & " an Stelle 19." End if End Select Wend End If valid = "Ok" If msg <> "" Then valid = "Fehler: " & msg End If End Function ~~Ende des Basic-Codes~~~~~~~~~ -rl Am 2013-01-27 um 17:33 schrieb Stefan Weigel<stefan.weigel@bildungskreis.org>:Hallo Achim, Am 27.01.2013 15:22, schrieb Achim Pabel:XX-XXXXX-9999-X99-N999 Eine Kundennummer soll in einem Feld manuell erfasst werden. Dabei setzt sich diese aus "X" für A-Z (GOSSBUCHSTABEN) und "9" für 0-9 Zeichen zusammen. Nur "N" ist statisch. Getrennt werden die einzelnen Abschnitte durch das "-" Minus-Zeichen. Frage: Wie kann für dieses eine Feld eine Plausibilitätsprüfung gemacht werden.Die Lösung findest Du hier: http://www.file-upload.net/download-7119512/Achim.ods.html Gib in den Zellen A4 bis A19 Deine zu prüfenden Zeichenketten ein. In der Spalte X erscheint eine 1, wenn die Zeichenkette Deinen Bedingungen entspricht. Um zu sehen, wie es gemacht wurde, blendest Du die Zeile 2 und 3 und die Spalten B bis W ein und schaust Dir die Formeln an. [...]
-- Informationen zum Abmelden: E-Mail an users+help@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