Array oder datenliste

hallo!

habe ein problem, kenne mich mit arrays oder so nicht aus!

If Range(„C10“) = „Elektrotechnik“ Or Range(„C10“) = „elektrotechnik“ And Range(„C12“) = „Wien“ Or Range(„C12“) = „wien“ Then
Call elektrowien

und dann folgen andere kombinationen mit anderen Bundesländern!

kann ich das vereinfachen??

Hallo!

Letzlich steht in der angegebenen Zeile nur folgendes:

If Range(„C10“) = „Elektrotechnik“ or Range(„C12“) = „wien“ Then …

Wenn mehrere verschiedene Städte zB. unterschieden werden sollen, könnte man noch mit der Funktion „Index“ einen Index für die betreffende Standt in einer Liste von Stätden zurückgeben lassen und dann mit „select case“ für die unterschiedlichen Indizes verschiedene Funktionen aufrufen.

LG
Jochen

naja, wenn ich aber nur „Wien“ (mit großem anfangsbuchstaben schreibe, dann wird bei „wien“ das makro nicht ausgeführt)

habe 3 branchen und 9 bundesländer

elektrotechnik & burgenland
elektrotechnik & wien
.
.
.

kategorie2 & burgenland
kategorie3 & wien
.
.
.

und das geht mit allen 3 branchen und 9 bundesländern so

wie mach ich das am einfachsten??

danke & mfg
michael

Hallo,

am einfachsten _wäre es_, wenn nicht für jede Kombination eine andere Funktion aufgerufen würde, sondern wenn es eine Funktion _gäbe_, welcher die Branche und das Bundesland als Parameter übergeben _würden_. Möglicherweise ist die Bearbeitung der Parameter in dieser Funktion ja dann weniger komplex (zB., wenn nur eine Meldung ausgegeben werden soll). Aber selbst, wenn das nicht der Fall ist, so ist es doch eine Überlegung wert: Wenn diese Funktionen im Wesentlichen alle das selbe machen sollen (zB. einen Geschäftsbericht erstellen oder einen Lagerbestand auflisten oder sonstwas), eben nur für die jeweilige Branche im jeweiligen Bundesland, so ist es bessere Programmierpraxis, defür auch nur eine Funktion zu schreiben, welcher eben diese Parameter übergeben werden. Die Fallunterscheidung findet dann innerhalb dieser Funktion erst statt.

Die Fallunterscheidung machst du am Besten mit der Anweisung „select case“, die du für die Branche und das Bundesland schachtelst. Ich habe mal in der Hilfe nachgesehen: VBA akzeptiert ja sogar Zeichenfolgen als Testausdruck. Du kannst also sowas in dieser Art schreiben:

Select Case bundesland
 Case "burgenland"
 Select Case branche
 Case "elektrotechnik"
 Call ElektrotechnikBurgendand
 Case "hydraulik"
 Call HydraulikBurgendand
 ' weitere Cases für branche
 Case Else
 MsgBox("Unbekanntes Bundesland: " & bundesland, VbCritical)
 End Select
 Case "wien"
 Select Case branche
 Case "elektrotechnik"
 Call ElektrotechnikWien
 Case "hydraulik"
 Call HydraulikWien
 ' weitere Cases für die branche
 Case Else
 MsgBox("Unbekannte Branche: " & branche, VbCritical)
 End Select
 ' weitere Cases für bundesland
End Case

naja, wenn ich aber nur „Wien“ (mit großem anfangsbuchstaben
schreibe, dann wird bei „wien“ das makro nicht ausgeführt)

Wenn Du Gross-Kleinschreibung ignorieren willst, kannst du die Zeichenketten in den Variablen branche und bundesland vor der Select Case - Abfrage ja mit der Funktion LCase$ in Kleinbuchstaben wandeln.

LG
Jochen

Hallo Michael.

Die Groß- und Kleinschreibung brauchst Du nicht zu unterscheiden, wenn Du dir folgende Funktionen zunutze machst :

Schreibe anstatt (Schema)

If Bla = "Elektrotechnik" Or Bla = "elektrotechnik" then

lieber das hier

If LCase(Trim(Bla)) = "elektrotechnik" then

Die Funktion LCase() macht aus allen Großbuchstaben in einem String Kleibuchstaben, die Funktion Trim() löscht zusätzlich noch eventuell eingegebene Leerzeichen vor und hinter dem String. Wenn Du es dann noch in eine eigene Funktion packst, wie von meinem Vorposter vorgeschlagen, kann der Code dieser Funktion nochmal reduziert werden.

Viele Grüße
Carsten