Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Select Case i.V. mit vbNullString

Forumthread: VBA Select Case i.V. mit vbNullString

VBA Select Case i.V. mit vbNullString
29.05.2024 11:39:18
Joschi Witchcraft
Hallo Forum.

Ich bin gerade dabei, eine Routine zu erstellen, mit der ich die Form des übergebenen Parameters ermitteln kann. Bei meiner Planung gehe ich davon aus, dass es auch ein Array sein kann.

Hier mein Testcode:


Sub CaseTest()
Dim V As Variant
Dim N As Integer
N = 19 / 2
V = Array(1, 5, 7)
V = vbNullString
Select Case True
Case IsArray(V)
Stop
Case IsEmpty(V)
Stop
Case IsNumeric(N)
Stop
Case Else
Stop
End Select
End Sub


Meine Probleme: wie kann ich innerhalb der Case-Routine überprüfen, ob ein leerer String übergeben wurde, bzw. ob der numerische Begriff eine Ganzzahl ist. Ist der Begriff keine Ganzzahl, soll der Test bei "Case Else" landen.

Obwohl ich (testweise) die Variable V auf vbNullString gesetzt habe, wird dies mit IsEmpty(V) nicht erkannt.

Die Stop's habe ich eingebaut, um zu sehen, bei welchem Select die Bedingung erkannt wird.

Wer kann mir weiterhelfen?

Gruß Joschi
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Select Case i.V. mit vbNullString
29.05.2024 12:25:59
GerdL
Hallo Joschi,
ein Leerstring der Länge 0 ist halt nicht gleich Empty.
Gruß Gerd
AW: VBA Select Case i.V. mit vbNullString
29.05.2024 13:11:25
daniel
Hi
isEmpty = true bekommst du nur bei Variantvariablen, denen nach Deklaration noch kein Wert zugewiesen wurde und die auch noch keinen Datentyp haben.
sobald du einmal einen Wert zugewiesen hast, hat die Variable auch dessen Datentyp, solange bis du einen neuen Wert zuweist.
dh eine Variantvariable, die zuvor einen Wert zugewiesen bekommen hat, kann niemals Empty sein.

du hast hier aber einen Wert zugewiesen und vbNullstring ist nicht nichts, sondern ein Text.

Gruß Daniel

Anzeige
AW: VBA Select Case i.V. mit vbNullString
29.05.2024 13:49:14
Onur
"Select Case True" ???
Was soll das denn darstellen? TRUE als Variablenname etwa?
AW: VBA Select Case i.V. mit vbNullString
29.05.2024 13:57:19
Der Steuerfuzzi
Nein, als Wahrheitswert. Das ist schon korrekt, denn man kann dann in den Case-Bedingungen eine Formel hinterlegen, wenn diese True ist wird der Code entsprechend ausgeführt.

Man muss nur aufpassen, wenn mehrere Case-Bedingungen True werden, dass nur die erste ausgeführt wird, da VBA nicht weiter prüft (wie z. B. in C).
Anzeige
AW: VBA Select Case i.V. mit vbNullString
29.05.2024 14:03:25
Onur
Ist doch Quatsch, es so kompliziert zu machen, statt direkt so:
Sub CaseTest()

Dim V As Variant
Dim N As Integer
N = 19 / 2
V = Array(1, 5, 7)
V = vbNullString
If IsArray(V) Then Stop
If V = "" Then Stop
If IsNumeric(N) Then Stop
End Sub
Anzeige
AW: VBA Select Case i.V. mit vbNullString
29.05.2024 14:05:29
Der Steuerfuzzi
Was Quatsch ist und was nicht liegt im Auge des Betrachters. Viele Wege führen nach Rom und es gibt berechtigte Szenarien, bei denen Select Case (auch mit Select True) sinnvoll ist.

Ich finde Select oft übersichtlicher und strukturierter als die möglichen Alternativen. Aber das kann ja jeder für sich entscheiden.
Anzeige
AW: VBA Select Case i.V. mit vbNullString
29.05.2024 14:09:27
Onur
Nur dass, in diesem Fall, damit das selbstproduzierte Problem gelöst wäre. :)
Und genau diesen Fall meinte ich ja auch bezüglich Quatsch.
AW: VBA Select Case i.V. mit vbNullString
29.05.2024 14:11:48
Onur
Wenn man
Case V = ""

nimmt, funktioniert es.
AW: VBA Select Case i.V. mit vbNullString
29.05.2024 13:58:38
daniel
Hi
das ist schon so korrekt
sieht zwar ungewoht aus, aber man kann beim Select Case die Logik auch umkehren und die Werteberechnung bei den einzelnen Cases ausführen.
beim Select Case muss nicht zwingend die Variable oder Berechnung stehen. Das macht man zwar meistens so, aber es geht auch andersrum

Gruß Daniel
Anzeige
AW: VBA Select Case i.V. mit vbNullString
29.05.2024 15:09:08
Joschi Witchcraft
Hallo Forum.

Auf meine Anfrage sind zwei gute Hinweise für mich zurückgekommen.

1. Es funktioniert auch mit "Case V = vbNullString"
2. Ich werde mich mit VarType beschäftigen.

Ich hatte nicht erwartet, dass es in Zusammenhang mit meiner Frage zu einer Diskussion über Für und Wider "Select Case" kommt. Ich persönlich finde, dass damit ein Code übersichtlicher wird, als mit mehreren IF's und ELSE's. Und einige haben dazugelernt, dass "True" oder "False" bei "Select Case" durchaus seinen Sinn hat,

Herzlichen Dank an alle, die sich an meinem Problem beteiligt haben.

Gruß Joschi

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige