Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Zelleninhalt mit textbox vergleichen

Betrifft: Zelleninhalt mit textbox vergleichen von: Heiko
Geschrieben am: 21.09.2014 00:41:06

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

  

Betrifft: AW: Zelleninhalt mit textbox vergleichen von: Heiko
Geschrieben am: 21.09.2014 01:19:38

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


  

Betrifft: Eine TextBox heißt deshalb so, weil sie TEXT ... von: Luc:-?
Geschrieben am: 21.09.2014 01:19:43

…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 :-?


  

Betrifft: AW: Zelleninhalt mit textbox vergleichen von: Mullit
Geschrieben am: 21.09.2014 01:30:17

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ß,


  

Betrifft: AW: Zelleninhalt mit textbox vergleichen von: Mullit
Geschrieben am: 21.09.2014 01:42:08

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ß,


  

Betrifft: AW: Zelleninhalt mit textbox vergleichen von: Mullit
Geschrieben am: 21.09.2014 01:55:40

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ß,


  

Betrifft: AW: Zelleninhalt mit textbox vergleichen von: Heiko
Geschrieben am: 22.09.2014 01:54:42

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


  

Betrifft: AW: Zelleninhalt mit textbox vergleichen von: Heiko
Geschrieben am: 22.09.2014 02:19:06

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


  

Betrifft: AW: Zelleninhalt mit textbox vergleichen von: Mullit
Geschrieben am: 22.09.2014 07:02:56

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ß,


  

Betrifft: AW: Zelleninhalt mit textbox vergleichen von: Mullit
Geschrieben am: 22.09.2014 07:30:05

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ß,


 

Beiträge aus den Excel-Beispielen zum Thema "Zelleninhalt mit textbox vergleichen"