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

Variable mit Zellinhalt vergleichen

Forumthread: Variable mit Zellinhalt vergleichen

Variable mit Zellinhalt vergleichen
19.08.2025 18:02:44
Aran
Hallo liebe Freunde des Excels

Ich hänge mal wieder fest, und da ich hier noch immer brauchbare Tipps bekommen habe, versuche ich es hier gerne wieder.
Da es sich bei meiner Datei um ein riesiges Ding handelt und auch der Code ellenlang ist, versuche ich es erst mal ohne Beispieldatei.
Wenn Ihr die durchaus benötigt, kann ich die auch liefern, aber erst morgen, weil ich dann erst 99,9 % der Datei löschen muss.

Ich hänge an folgendem Schnipselchen fest.
Ich versuche es so kurz wie möglich zu machen und lasse alles drumherum weg.

In Zelle A27 steht der Wert 801 und den will ich finden, indem ich in einer For Next Schleife Zelle für Zelle in Spalte A abfrage.
Folgendes funktioniert:

Sub test()

Dim strMKW As String
strMKW = "801"

If Worksheets(1).Cells(27, 1).Value = strMKW Then
MsgBox ("ja")
Else
MsgBox ("nein")
End If
End Sub


Ich bekomme ein "ja"
Der Haken:
Den Wert 801 (oder andere) bekomme ich über die ComboBox einer Userform.
Diese habe ich cbxMKW genannt.
Wenn ich nun im oben genannten Code in der If Zeile strMKW durch cbxMKW ersetze, bekomme ich als Ergebnis "nein" und das macht mich verrückt. Egal, wie ich die Zelle formatiere, ob Standard, Zahl oder Text. Der Code erkennt die 801 nicht, obwohl cbxMKW eindeutig mit "801" gefüllt ist. MsgBox(cbxMKW) gibt 801 aus.
Bin für jeden Tipp dankbar
Leider kann ich erst morgen wieder antworten, da ich jetzt Feierabend mache.

Viele Grüße
Aran
Anzeige

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

Betreff
Datum
Anwender
Anzeige
Nachtrag
19.08.2025 18:16:26
Aran
... selbst das hier funktioniert und damit würde ich mir im Notfall helfen.



Sub test()
Dim strMKW As String
.....
strMKW = cbxMKW

If Worksheets(1).Cells(27, 1).Value = strMKW Then
MsgBox ("ja")
Else
MsgBox ("nein")
End If
End Sub


Aber es ist zum Mäuse melken. Warum funzt es nicht, wenn ich direkt mit dem Inhalt der ComboBox vergleiche?
Anzeige
AW: Nachtrag
20.08.2025 02:17:27
Uduuh
Hallo,
mal alles auf ein Level heben:
If CInt(Worksheets(1).Cells(27, 1) = CInt(cbxMKW) Then


Gruß aus'm Pott
Udo
so: CDbl(cbxMKW)
19.08.2025 18:17:52
Alwin Weisangler
o.w.T.

Gruß Uwe
AW: Variable mit Zellinhalt vergleichen
19.08.2025 18:45:27
daniel
Hi
wie du die Zelle formatierst, wirkt sich auf den vorhandenen Zellinhalt nicht aus.
dh auch wenn du die Zelle als Text formatierst, bleibt der Inhalt zunächst eine Zahl.
Erst wenn du in diese Zelle einen neuen Wert eingibst, wird sich das auswirken.

"=" unterscheidet streng zwischen Text und Zahl. Die Zahl 123 ist ungleich dem Text "123"

du kannst das Problem hier einfach lösen, in dem du auch den Zellinhalt für den Vergleich in einen Text wandelst.
dazu gibt es mehrere Möglichkeiten:
a) die Funkion CStr:
If CStr(Worksheets(1).Cells(27, 1).Value) = strMKW Then

b) das Anhängen eines Textes
If (Worksheets(1).Cells(27, 1).Value & "")= strMKW Then

c) die Abfrage der .Text-Eigenschaft
If Worksheets(1).Cells(27, 1).Text = strMKW Then

d) umwandeln mit FORMAT (oder Worksheetfunction.Text)
If Format(Worksheets(1).Cells(27, 1).Value, "0") = strMKW Then


wenn Dezimalzahlen oder Datumswerte in den Zellen stehen, ist man bei den Varianten a) und b) von der VBA-Automatik abhängig, wie diese Werte in Text gewandelt werden
bei Variante c) wird der Wert so übernommen, wie über das Zahlenformat der Zelle vorgegeben (wie angezeigt) und
bei Variante d) kann man die Formatierungsregel für die Umwandlung in Text selbst vorgeben.

Gruß Daniel

Anzeige
AW: Variable mit Zellinhalt vergleichen
20.08.2025 10:25:16
Aran
Hi Ihr
Jetzt habe ich 6 Lösungen von denen die meisten funktionieren.

@Udo und Uwe
Eure Lösungen funktionieren perfekt. Jetzt muss ich mich nur noch schlau machen, warum die funktionieren. vba halt nur bescheiden bei mir.

@Daniel
Vorweg: Deine Lösungen a, b und d funktionieren, c funktioniert nicht.
Vielen Dank auch für Deine Erklärung, die ich im Prinzip verstanden habe.
Was ich halt noch nicht verstehe:
Ich vergleiche ja die Zelle mit dem Inhalt einer ComboBox, was erstmal nicht geht.
Wenn ich die Zelle jedoch mit einer Variablen vergleiche, ist es wieder völlig unerheblich, ob ich diese z.B. als String oder Integer deklariere. Wenn ich Deine Erklärung richtig verstanden habe, dürfte der Vergleich Zelle und strVariable nicht gehen.
Aber beide Male funktioniert es. Nur mit dem Inhalt der ComboBox eben nicht.
Und wenn ich den an eine Variable übergebe, wie gesagt egal ob String oder Zahl, dann funktioniert es wieder oO.
Die Zusammenhänge sind mir noch nicht so klar, würde ich aber gerne verstehen.

Egal, jetzt habe ich erstmal eine Lösung und danke Euch sehr für Eure Mühe

Viele Grüße
Aran
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18