Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1468to1472
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

Zahl mit Zahl vergleichen?

Zahl mit Zahl vergleichen?
19.01.2016 19:40:05
Thomas
Hallo Zusammen,
ich habe eine Datei mit einer großen Anzahl an Zeilen. Ich möchte innerhalb einer Spalte gewisse Zahlen Markieren. Dazu habe ich eine UserForm mit einem Button und einer TextBox.
Wenn ich in der If Abfrage die Zahl als Zahlwert eintrage, funktioniert es ohne Probleme. Wenn ich aber in der If Abfrage mit einer Variable oder dem Inhalt der TextBox vergleiche, passiert nichts.
Woran liegt dies?

Private Sub CommandButton1_Click()
Dim MXZ, i, x, y As Integer
MXZ = Tabelle1.UsedRange.Rows.Count
For i = MXZ To 2 Step -1
x = TextBox1.Value
If Tabelle1.Cells(i, 10).Value = x Then
Tabelle1.Cells(i, 10).Interior.ColorIndex = 47
End If
Next i
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zahl mit Zahl vergleichen?
19.01.2016 19:42:13
Hajo_Zi
x ist Variant und damit wird Text auf die Variable geschrieben.

AW: Zahl mit Zahl vergleichen?
19.01.2016 20:18:36
Werner
Hallo Thomas,
versuch es mal so...
Private Sub CommandButton1_Click()
Dim MXZ, i, y As Integer
Dim x as Variant
MXZ = Tabelle1.UsedRange.Rows.Count
For i = MXZ To 2 Step -1
x = CDbl(TextBox1)
If Tabelle1.Cells(i, 10).Value = x Then
Tabelle1.Cells(i, 10).Interior.ColorIndex = 47
End If
Next i
End Sub
Der Eintrag in der Textbox ist Text und muss in eine Zahl umgewandelt werden. Da ich keine Ahnung habe welche Zahlen du vergleichen willst habe ich x als Variant deklariert.
Gruß Werner

Anzeige
AW: Zahl mit Zahl vergleichen?
19.01.2016 20:24:49
Daniel
Hi
da musst du schon auf die Typgleichheit der Variablen achten.
1. ein Textboxinhalt ist grundsätzlich Text (Variablentyp String), auch wenn der Text aus Ziffern besteht.
2. deine Variablen MXZ, i, und x haben keine Zuweisung eines Variablentyps und werden daher als VARIANT deklariert. Sie übernehmen dann den Typ des Wertes, der ihnen zugewiesen wird (dh. so wie Hajo schon geschrieben hat, durch die Zuweisung des Textboxwertes vom Typ String wird dann auch x eine Stringvariable.
3. Zahlen in Excelzellen sind grundsätzlich vom Typ Double
4. im Direkten Vergleich unterscheidet Excel und VBA zwischen Text und Zahl, dh der Text "123" ist nicht gleich der Zahl 123
du hast hier folgende Lösungsmöglichkeiten:
a) x ebenfalls als Zahl zu deklarieren, bei der Zuweisung des Textboxwertes wird dann automatisch umgewandelt:
dim MXZ as Long, i as Long, x as Long, y as Long
b) bei der Zuweisung des Wertes diesen in eine Zahl wandeln:
x = CDbl(Textbox1.Text)
c) den Zellwert in einen Text wandeln, damit er mit dem Textbox-Text verglichen werden kann, hierzu gibt es zwei Möglichkeiten:
If CStr(Tabelle1.Cells(i, 10).value) = x Then
If Tabelle1.Cells(i, 10).Text = x Then
ich hoffe es ist klar, das c) nicht mit a) und b) kombiniert werden sollte, denn sonst hast du das gleiche Problem ja wieder, nur andersrum)
die letzte Variante ist die "robusteste", dh sie verursacht keinen Fehlerabbruch, wenn in der TextBox ein Text steht, der nicht in eine Zahl wandelbar ist oder wenn die Zelle einen Fehlerwert enthält.
und noch ein Tip:
die TextBox kann sich wärend des Schleifenumlaufs nicht ändern. Daher solltest du das:

x = Textbox1.Value
vor der For-Next-Schleife platzieren, denn sonst führts du diesen Befehl bei jedem Schleifenumlauf nochmal aus, obwohl das nicht notwendig ist.
Gruß Daniel

Anzeige
AW: Zahl mit Zahl vergleichen?
19.01.2016 21:03:18
Gerd
Hallo Thomas!
Private Sub CommandButton1_Click()
Dim x As Double, i As Long
If Not IsNumeric(TextBox1.Value) Then Exit Sub
x = CDbl(TextBox1.Value)
With Tabelle1
For i = .UsedRange.Rows.Count To 2 Step -1
If .Cells(i, 10).Value = x Then .Cells(i, 10).Interior.ColorIndex = 47
Next i
End With
End Sub

Gruß Gerd

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige