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.
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.
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.