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


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

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.