Anzeige
Archiv - Navigation
1380to1384
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
Zelleninhalt mit textbox vergleichen
21.09.2014 00:41:06
Heiko
Hallo, ich habe folgenden Code in einer Userform stehen:
Private Sub CommandButton1_Click()
Range("A1").Select
Anfang:
If ActiveCell = TextBox1 Then
ActiveCell.Offset(0, 1) = ok
Else
End If
ActiveCell.Offset(1, 0).Select
GoTo Anfang
End Sub

-----------------------------------------------------------------
Eigentlich ist der Code länger, aber so ist er übersichtlicher.
In die Textbox kommen nur Zahlen und in der Tabelle stehen auch nur Zahlen.
Ich vermute das ein .Value fehlt aber habe dieses schon an allen erdenklichen stellen eingefügt ohne Erfolg.
Jetzt die Frage der Fragen
wo liegt der Fehler?
und wie nennt man das ".Value"".offset"usw
Mit freundlichem Gruß
Heiko

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelleninhalt mit textbox vergleichen
21.09.2014 01:19:38
Heiko
Oh sorry habe den Fehler vergessen zu beschreiben :)
also das Makro erkennt nicht, dass die Inhalte der Zelle und der Textbox gleich sind.
Wenn in der "activecell" eine 1 eingetragen ist
und in der Textbox eine 1 eingetragen ist, macht das Makro mit "Else" weiter
ich habe auch schon den Inhalt der Textbox nach Range("F1") Kopiert (Range("F1") = Textbox1) und dann
if activecell = Range("F1")
doch das gleiche er erkennt es einfach nicht.
Mit freundlichem Gruß
Heiko

Eine TextBox heißt deshalb so, weil sie TEXT ...
21.09.2014 01:19:43
Luc:-?
…enthält, Heiko,
- das kannst du nun wirklich 100fach im Forumsarchiv und anderswo lesen -, muss also noch umgewandelt wdn (CInt, CLng, CSng, CDbl usw). Sonst ist der sichtbare Code soweit OK, nur ist ok vermutlich Text und muss dann "ok" geschrieben wdn (wird sonst für eine Variable gehalten!). Außerdem findet das Pgm so auch kein Ende, da zuletzt stets zu Anfang gesprungen wird. Will mal zu deinen Gunsten vermuten, dass dieser schwerwiegende Lapsus deiner „Vereinfachung“ geschuldet ist. Üblicherweise verwendet man hier zyklische Verarbeitung und kann auf .Select verzichten…
Gruß, Luc :-?

Anzeige
AW: Zelleninhalt mit textbox vergleichen
21.09.2014 01:30:17
Mullit
Hallo,
weiß jetzt nicht was Du genau willst(vermutlich eine Schleife) also mal 3 Möglichkeiten:
Für eine einzelne ausgewählte Zelle:
Option Explicit
Private Sub CommandButton1_Click()
If ActiveCell = TextBox1 Then
ActiveCell.Offset(0, 1) = "ok"
End If
End Sub

Für einen ausgewählten Bereich:
Option Explicit
Private Sub CommandButton1_Click()
Dim objCell As Range
For Each objCell In Selection
If objCell = TextBox1 Then
objCell.Offset(0, 1) = "ok"
End If
Next
End Sub

Für alle Daten in Spalte 1:
Option Explicit
Private Sub CommandButton1_Click()
Dim objCell As Range
For Each objCell In Cells(1, 1).Resize(Cells(Rows.Count, 1).End(xlUp).Row, 1)
If objCell = TextBox1 Then
objCell.Offset(0, 1) = "ok"
End If
Next
End Sub

Und noch eine Array-Variante:
Option Explicit
Private Sub CommandButton1_Click()
Dim avntArray As Variant
Dim ialngIndex As Long
avntArray = Cells(1, 1).Resize(Cells(Rows.Count, 1).End(xlUp).Row, 1)
For ialngIndex = 1 To UBound(avntArray)
If avntArray(ialngIndex, 1) = TextBox1 Then
avntArray(ialngIndex, 1) = "ok"
Else
avntArray(ialngIndex, 1) = vbNullString
End If
Next
Cells(1, 2).Resize(Cells(Rows.Count, 1).End(xlUp).Row, 1) = avntArray
End Sub

Gruß,

Anzeige
AW: Zelleninhalt mit textbox vergleichen
21.09.2014 01:42:08
Mullit
Hallo,
wenn Du Zahlen in den Zellen hast, müsstest Du, wie Luc schon schrieb, noch Typkonvertierungen einbauen,
also anhand des letzten Beispiels:
Option Explicit

Private Sub CommandButton1_Click()
Dim avntArray As Variant
Dim ialngIndex As Long
avntArray = Cells(1, 1).Resize(Cells(Rows.Count, 1).End(xlUp).Row, 1)
For ialngIndex = 1 To UBound(avntArray)
    If CStr(avntArray(ialngIndex, 1)) = TextBox1 Then
      avntArray(ialngIndex, 1) = "ok"
    Else
      avntArray(ialngIndex, 1) = vbNullString
    End If
Next
Cells(1, 2).Resize(Cells(Rows.Count, 1).End(xlUp).Row, 1) = avntArray
End Sub

Gruß,

Anzeige
AW: Zelleninhalt mit textbox vergleichen
21.09.2014 01:55:40
Mullit
Hallo,
bei den anderen Bsp. geht natürlich auch einfach die .Text-Eigenschaft des Range-Objektes:
Option Explicit

Private Sub CommandButton1_Click()
Dim objCell As Range
For Each objCell In Selection
    With objCell
        If .Text = TextBox1 Then
          .Offset(0, 1) = "ok"
        End If
    End With
Next
End Sub

Gruß,

Anzeige
AW: Zelleninhalt mit textbox vergleichen
22.09.2014 01:54:42
Heiko
hallo, danke schoneimal für die zahlreichen Beispiele.
kopiert und angepasst, so das diese auch in meiner richtigen Tabelle laufen, konnte ich es.
Doch ich kann leider noch nicht nachvollziehen warum es so geht.
ich meine es muss doch auch ohne variablen gehen, es kann doch nicht seien das man so einen Aufwand betreiben muss, nur um eine Zahl in eine Zelle zu bekommen.
Mit freundlichem Gruß
Heiko

AW: Zelleninhalt mit textbox vergleichen
22.09.2014 02:19:06
Heiko
hallo, danke schoneimal für die zahlreichen Beispiele.
kopiert und angepasst, so das diese auch in meiner richtigen Tabelle laufen, konnte ich es.
Doch ich kann leider noch nicht nachvollziehen warum es so geht.
ich meine es muss doch auch ohne variablen gehen, es kann doch nicht seien das man so einen Aufwand betreiben muss, nur um eine Zahl in eine Zelle zu bekommen.
Mit freundlichem Gruß
Heiko

Anzeige
AW: Zelleninhalt mit textbox vergleichen
22.09.2014 07:02:56
Mullit
Hallo,
Du hast nicht ganz unrecht, das geht im Prinzip sogar als Einzeiler:
Option Explicit
Private Sub CommandButton1_Click()
If TextBox1  vbNullString Then
Cells(1, 2).Resize(Cells(Rows.Count, 1).End(xlUp).Row, 1) = _
Evaluate("=IF(" & Cells(1, 1).Resize(Cells(Rows.Count, 1).End(xlUp).Row, 1).Address & "=" &  _
TextBox1 & ",""ok"","""")")
Else
MsgBox "Die Box ist leer!", vbExclamation
End If
End Sub
Aber ob ein bis zwei Variablen jetzt soviel Aufwand bedeuten...
Das hier ist Aufwand....
Gruß,

Anzeige
AW: Zelleninhalt mit textbox vergleichen
22.09.2014 07:30:05
Mullit
Hallo,
allerdings müsste man die Box noch auf Zahlenwerte abfragen, sonst läuft man in einen Fehler:
Option Explicit
Private Sub CommandButton1_Click()
If IsNumeric(TextBox1) Then
If TextBox1  vbNullString Then
Cells(1, 2).Resize(Cells(Rows.Count, 1).End(xlUp).Row, 1) = _
Evaluate("=IF(" & Cells(1, 1).Resize(Cells(Rows.Count, 1).End(xlUp).Row, 1).Address & "=" & _
TextBox1 & ",""ok"","""")")
Else
MsgBox "Die Box ist leer!", vbExclamation
End If
Else
MsgBox "Die Box enthält keine Zahl!", vbExclamation
End If
End Sub

...also auch nicht mehr so ganz ein Einzeiler....
Gruß,
Anzeige

354 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige