ERLEDIGT
JA
JA
ANTWORTEN
8
8
ZUGRIFFE
621
621
EMPFEHLEN
-
21.07.06 19:14 #1
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?
GrussInternetseite:
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 -
-
24.07.06 10:58 #2
- 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.
-
24.07.06 18:36 #3
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 -
-
25.07.06 10:08 #4
- 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.
-
25.07.06 13:08 #5
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
KonstantinInternetseite:
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 -
-
25.07.06 13:30 #6
- 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.
-
25.07.06 16:19 #7
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 -
-
25.07.06 16:49 #8
- 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.
-
26.07.06 15:48 #9
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
-
brauche Hilfe bei select case..
Von da_blubb im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 16.12.07, 19:36 -
VBScript Select Case
Von JeyB im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 05.12.07, 11:30 -
SELECT ... CASE : verschachteln
Von klettermax im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 21.07.05, 18:47 -
Select Case verkürzen?
Von schutzgeist im Forum ASPAntworten: 5Letzter Beitrag: 29.06.05, 19:37 -
Problem mit select case
Von Klaiba im Forum Visual Basic 6.0Antworten: 5Letzter Beitrag: 04.11.04, 20:22





Zitieren
Login





