tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
621
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Konstantin Gross
    Konstantin Gross Konstantin Gross ist offline Mitglied Platin
    Registriert seit
    Sep 2003
    Ort
    nähe Kassel (Hessen)
    Beiträge
    703
    Hallo,
    ich bin gerade dabei in Excel und VBA eine Auswertung für Frachkosten zu programmieren, es funktioniert soweit auch alles, abre bei einem kleinen Problem komme ich einfach nicht weiter. Folgendes, ich prüfe in eine Zeile ob bestimmte Postleizahlen in einer Zeile vorkommen um diesen eine Zone zu vergeben, jetzt habe ich aber eine Zeile wo mind. 300 Postleihzahlen vorkommen. Ich hab das bisher so gelöst:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    Select Case plz
        Case "75", "77", "78", "91", "92", "93", "94", "95"
            zone = "AA"
        Case "55"
            zone = "AL"
        Case "88"
            zone = "AM"
        Case "90"
            zone = "AN"
        Case Else
            MsgBox ("Falsche Zone, Spalte M")
            errorkeyspaltem = 1
    End Select

    Mein Problem ist jetzt, das ich per Hand, PLZ-Gebiete von z.B. 30000-40000 eintragen muss, da spielt aber Excel bzw. VBA nicht mehr mit wenn ich das halt "30000", "30001" etc. mache. Gibt es eine elegantere Lösung so große Zahlenbereiche unterzubringen und trotzdem diese in der Case Abfrage zu benutzen?

    Gruss
     
    Internetseite:
    http://www.texturenland.de

    Blog:
    http://blog.texturenland.de

    Codesnippets:
    .NET-Snippets

    - Sollte ich bei einer Frage weitergeholfen haben, würde ich mich über eine positive Bewertung freuen -

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.169
    Hi.

    Nein, das geht nicht. Du kannst höchstens im Case Else Block eine If-Abfrage machen.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  3. #3
    Avatar von Konstantin Gross
    Konstantin Gross Konstantin Gross ist offline Mitglied Platin
    Registriert seit
    Sep 2003
    Ort
    nähe Kassel (Hessen)
    Beiträge
    703
    Und es geht doch

    Case "50000" to "56000"

    Funktioniert so wunderbar bei mir.
     
    Internetseite:
    http://www.texturenland.de

    Blog:
    http://blog.texturenland.de

    Codesnippets:
    .NET-Snippets

    - Sollte ich bei einer Frage weitergeholfen haben, würde ich mich über eine positive Bewertung freuen -

  4. #4
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.169
    Du hast natürlich Recht. Na, in der Hilfe vom Select Case für VB hab ich's nicht gefunden - allerdings steht's in der VBA Referenz drin. Mea Culpa.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  5. #5
    Avatar von Konstantin Gross
    Konstantin Gross Konstantin Gross ist offline Mitglied Platin
    Registriert seit
    Sep 2003
    Ort
    nähe Kassel (Hessen)
    Beiträge
    703
    Hallo,
    macht doch nichts Bei einem anderen Problem könntest du mir vielleicht helfen und zwar überprüfe ich ja in einer Zeile die Postleitzahlen, diese waren vorher immer zweistellig. Z.B. 12345 Musterstadt, durch folgenden Code hab ich die PLZ ausgelesen:

    plz = Format(plz, "00000") 'PLZ wird immer 5-stellig geschrieben
    plz = Left(plz, 2) 'es bleiben nur die ersten 2 stellen

    So für die Postleitzahlen waren für uns immer nur die ersten 2 Stellen interessant, da diese Zonen zugeordnet werden. Jetzt haben wir einen neuen Speditionpartner der Zonen hat wo man unbedingt die genaue Postleitzahl angeben muss. Jetzt kommt er ja bei mir nie in die Bedinung, siehe weiter oben den Code. Sprich die Postleitzahlen werden immer 5 stellig angegeben, aber für manche Zonen sind halt nur die ersten 2 und für die anderen die kompletten 5 Zahlen interessant, hast du ne Idee wie man das realisieren könnte?

    Gruss
    Konstantin
     
    Internetseite:
    http://www.texturenland.de

    Blog:
    http://blog.texturenland.de

    Codesnippets:
    .NET-Snippets

    - Sollte ich bei einer Frage weitergeholfen haben, würde ich mich über eine positive Bewertung freuen -

  6. #6
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.169
    Also ich hätte ja die PLZ erstmal in einen Integer umgewandelt. Zumal z.B. "0z" auch noch im Bereich "09" To "12" liegt.

    Code vb:
    1
    2
    3
    
    Select Case CInt(plz)
      Case 75000 To 75999, 77000 To 77999 ' usw.
    End Select

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  7. #7
    Avatar von Konstantin Gross
    Konstantin Gross Konstantin Gross ist offline Mitglied Platin
    Registriert seit
    Sep 2003
    Ort
    nähe Kassel (Hessen)
    Beiträge
    703
    Hallo,
    danke ich werds mir mal morgen anschauen, wenn ich an der Arbeit bin. Kann ich mit deinem geposteten Beispiel genau mein Ziel erreichen? Weil wenn ich das nur nach Int umwandel, was für Sinn soll das dann haben? Er hats ja vorher mit nur zwei Stellen wunderbar gemacht, sind halt noch ein paar fünfstellige dazugekommen.
     
    Internetseite:
    http://www.texturenland.de

    Blog:
    http://blog.texturenland.de

    Codesnippets:
    .NET-Snippets

    - Sollte ich bei einer Frage weitergeholfen haben, würde ich mich über eine positive Bewertung freuen -

  8. #8
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.169
    Ich denke mir einfach das (deutsche) Postleitzahlen eben Zahlen sind und die würde ich numerisch vergleichen und nicht lexikalisch. Das verhindert unerwünschte Effekte - wenn irgendwie ein Buchstabe reingerutscht sein sollte. Es sollte zudem schneller sein 2 Zahlen miteinander zu vergleichen als 2 Strings. Dann ist es auch nicht soviel Schreibarbeit und sieht etwas übersichtlicher aus.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  9. #9
    Avatar von Konstantin Gross
    Konstantin Gross Konstantin Gross ist offline Mitglied Platin
    Registriert seit
    Sep 2003
    Ort
    nähe Kassel (Hessen)
    Beiträge
    703
    Hallo,
    hab das Problem jetzt gelöst, erstens hab ich den Datentyp der Postleitzahl auf Integer umgestellt, hab zwei Variablen erstellt und führe eine doppelte Case Abfrage durch, einmal für die 5stelligen Postleitzahlen und für die 2stellige Postleitzahlen. Und funktioniert jetzt wunderbar. Trotzdem danke für deine Hilfe.
     
    Internetseite:
    http://www.texturenland.de

    Blog:
    http://blog.texturenland.de

    Codesnippets:
    .NET-Snippets

    - Sollte ich bei einer Frage weitergeholfen haben, würde ich mich über eine positive Bewertung freuen -

Ähnliche Themen

  1. brauche Hilfe bei select case..
    Von da_blubb im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 16.12.07, 19:36
  2. VBScript Select Case
    Von JeyB im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 05.12.07, 11:30
  3. SELECT ... CASE : verschachteln
    Von klettermax im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 21.07.05, 18:47
  4. Select Case verkürzen?
    Von schutzgeist im Forum ASP
    Antworten: 5
    Letzter Beitrag: 29.06.05, 19:37
  5. Problem mit select case
    Von Klaiba im Forum Visual Basic 6.0
    Antworten: 5
    Letzter Beitrag: 04.11.04, 20:22