Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1968to1972
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Select Case mit Verschachtelung wird nicht erkannt

Select Case mit Verschachtelung wird nicht erkannt
26.03.2024 08:32:49
Philip
Hallo zusammen,
ich finde den Fehler in dem untenstehenden Programm nicht. Wenn die ausgewählte Zelle leer ist (letzter Case), werden die Ergebnisse aus dem Case "999" angezeigt, jedoch umgekehrt. Bestand = 0 ergibt "1ab Lager nur solange Vorrat reicht" und Bestand >0 ergibt "1löschen".


Public Function verfugbarkeit(Status As Variant, Signal As Single, Bestand As Single)


Select Case Status

Case "na"
Select Case Signal
Case "999" And Bestand > 0
verfugbarkeit = "1ab Lager nur solange Vorrat reicht"
Case "999" And Bestand = 0
verfugbarkeit = "1löschen"

Case "990" And Bestand > 0
verfugbarkeit = "2ab Lager nur solange Vorrat reicht"
Case "990" And Bestand = 0
verfugbarkeit = "2löschen"

Case "955" And Bestand > 0
verfugbarkeit = "3ab Lager nur solange Vorrat reicht"
Case "955" And Bestand = 0
verfugbarkeit = "3löschen"

Case "", " " And Bestand > 0
verfugbarkeit = "4ab Lager nur solange Vorrat reicht"
Case "", " " And Bestand = 0
verfugbarkeit = "4ab Lager"

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Select Case mit Verschachtelung wird nicht erkannt
26.03.2024 09:21:49
Sigi.21
Hallo Philip,

was soll case "na" sein ???? Die ist Unfug.
Status ist Single, also Zahl abfragen und kein "999" (=Text)!

Etwa so:

Select Case Status
Case 999
If Bestand > 0 Then
'bla bla
End If
If Bestand = 0 Then
'bla bla
End If
etc.

End Select
AW: Select Case mit Verschachtelung wird nicht erkannt
26.03.2024 09:39:50
daniel
Hi
du formlierst so wie für IF ... ELSEIF
Select Case arbeitet mit Einzelwerten aber kennt keine kombinierten Bedingungen.
Bzw, damit der erste Zweig ausgeführt wurde, müsste der ganze Ausdruck "999" And Bestand > 0 gleich "Bestand" sein, der Ausdruck ergibt aber nur WAHR oder FALSCH
der nächste Fehler ist, dass du Bestand als Zahl definiert hast (Single), dann aber mit einem Text ("999") vergleichst und nicht mit einer Zahl. Bei Vergleichen unterscheidet Excel und VBA zwischen Text und Zahl, dh 999 ist nicht das gleiche wie "999" und Texte sind immer größer als Zahlen.
weitere Logikfehler, wenn Signal den Typ Single hat, kann es kein Text sein und "" ist ein Text. also entweder musst du auf Zahlen umstellen oder Signal als String deklarieren (ich gehe mal davon aus
also entweder mit IF:

Select Case Status


Case "na"
Select Case Signal
If Signal = "999" And Bestand > 0 Then
verfugbarkeit = "1ab Lager nur solange Vorrat reicht"
ElseIF Signale = "999" And Bestand = 0 Then
verfugbarkeit = "1löschen"
...


oder verwende eine weitere Ebene:

Case "na"

Select Case Signal
Case "999"
Select Case Bestand
Case 0: verfugbarkeit = "1löschen"
Case else: verfugbarkeit = "1ab Lager nur solange Vorrat reicht"
End Select
Case "990"
Select case Bestand
Case 0: verfugbarkeit = "2löschen"
Case Else: "2ab Lager nur solange Vorrat reicht"
End Select
...


oder machs ganz anders, das was zu zeigst, erlaubt eine kürzere Variante:

Select case Status

Case "na"
Select Case Signal
Case "999": verfugbarkeit = "1"
Case "990": verfugbarkeit = "2"
Case "995": verfugbarkeit = "3"
Case "": verfugbarkeit = "4"
end Select
Select Case Bestand
Case 0: verfugbarkeit = verfügbarkeit & "löschen"
Case else: verfugbarkeit = verfügbarkeit & "ab Lager nur solange Vorrat reicht"
end Select


oder noch kürzer:
Select case Status

Case "na"
verfügbarkeit = Application.Match(Signal, Array("999", "990", "995", "") & IIF(Bestand = 0, "löschen"; "ab Lager nur solange Vorrat reicht"


Gruß Daniel




Anzeige
AW: Select Case mit Verschachtelung wird nicht erkannt
26.03.2024 10:29:20
Philip
Hi Daniel,

danke für die Hilfe. Ich hab das Signal als Variant definiert, damit funktionieren alle Werte.

Case "na"

Select Case Signal
Case "999"
Select Case Bestand
Case 0: verfugbarkeit = "löschen"
Case Else: verfugbarkeit = "ab Lager nur solange Vorrat reicht"
End Select

...

Case Else
Select Case Bestand
Case 0: verfugbarkeit = "löschen"
Case Else: verfugbarkeit = "ab Lager nur solange Vorrat reicht"
End Select

...
Anzeige
AW: Select Case mit Verschachtelung wird nicht erkannt
26.03.2024 09:33:16
Philip
Hallo Sigi,

"na" steht in dem Fall für einen Platzhalter. Der Status kann verschiedene Text und Zahlen-Werte annehmen, daher Variant.

Das Signal kann nur Zahlen-Werte annehmen oder leer sein, daher hier Single. Wenn das Signal leer oder 0 ist, wird der Fall nicht erkannt. Der Fehler tritt auch auf, wenn ich das Signal als Variant definiere.
AW: Select Case mit Verschachtelung wird nicht erkannt
26.03.2024 09:38:22
ralf_b
es ist ein Unterschied ob man auf Case "999" oder Case 999 prüft.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige