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 ... -- 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, 18:42:06 schrieb Rolf Lochbühler: > 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 <[email protected]>: > > 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 [email protected] 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
