Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
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

VBA Wert Zelle in Userform

Betrifft: VBA Wert Zelle in Userform von: Charly Neumann
Geschrieben am: 21.08.2014 07:48:22

Hallo!

Ich komme mit einem Problem nicht weiter und würde mich sehr über kompetente Hilfe freuen.

Ich habe folgenden Code:

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then
Cells(Range("A65536").End(xlUp).Offset(1, 0).Row, 1) = TextBox1
End If
End Sub
Bewirkt das der Inhalt aus einer Tetxtbox jeweils beim drücken der Enter Taste in die nächste Zeile der Spalte A eingegeben wird.

Nun hätte ich das gerne genau anderherum und ohne Enter Taste. Sprich: Ich möchte, dass bei klicken des CommandButtons jeweils der nächste Eintrag in einer Textbox auf meiner Userform eingetragen wird. Also erst B1 dann B2 dann B3 usw.

Hat da jemand nen Code für mich?

  

Betrifft: AW: VBA Wert Zelle in Userform von: fcs
Geschrieben am: 21.08.2014 08:21:47

Hallo Charly,

dazu muss man einen Zeilenzähler verwalten.
Hierzu kann man eine Variable (modulweit deklariert) verwenden oder auch die Tag-Eigenschaft eines Steuerelements.
Der Startwert des Zählers kann in der Initialisierungsprozedur des Userforms gesetzt werden.
Bei jedem Klick auf die Schaltfläche wird der Zellwert ausgelesen und der Zähler um 1 erhöht.

Gruß
Franz

'Userform-Code
Private Sub CommandButton1_Click()
    'Wert in Spalte B in Textbox1 einlesen
    With TextBox1
        .Value = Cells(Val(.Tag), 2).Text   ' oder .Value
        .Tag = Val(.Tag) + 1                'nächste Einlesezeile setzen
    End With
End Sub


Private Sub UserForm_Initialize()
    '
    TextBox1.Tag = 1            'Startzeile für das Einlesen der Werte
    Call CommandButton1_Click   '1. Wert einlesen
End Sub



  

Betrifft: AW: VBA Wert Zelle in Userform von: Charly Neumann
Geschrieben am: 21.08.2014 14:55:48

Funktioniert super! Vielen Dank!

Wie kann ich das ganze jetzt noch genauso für die Spalte C mit einem zusätzlichen CommandButton schaffen?


  

Betrifft: AW: VBA Wert Zelle in Userform von: fcs
Geschrieben am: 21.08.2014 15:26:45

Hallo Charly,

in dem Fall ist es wahrschlich günstiger die Tag-Eigenschaft der Commandbuttons als Zeilenzähler zu nutzen.

Gruß
Franz

'Userform-Code
Private Sub CommandButton1_Click()
    'Wert in Spalte B in Textbox1 einlesen
    With CommandButton1
        TextBox1.Value = Cells(Val(.Tag), 2).Text   ' oder .Value
        .Tag = Val(.Tag) + 1                'nächste Einlesezeile setzen
    End With
End Sub

Private Sub CommandButton2_Click()
    'Wert in Spalte C in Textbox1 einlesen
    With CommandButton2
        TextBox1.Value = Cells(Val(.Tag), 3).Text   ' oder .Value
        .Tag = Val(.Tag) + 1                'nächste Einlesezeile setzen
    End With
End Sub

Private Sub UserForm_Initialize()
    '
    CommandButton1.Tag = 1            'Startzeile für das Einlesen der Werte aus Spalte B
    CommandButton2.Tag = 1            'Startzeile für das Einlesen der Werte aus Spalte C
    Call CommandButton1_Click   '1. Wert einlesen
End Sub



  

Betrifft: AW: VBA Wert Zelle in Userform von: Charly Neumann
Geschrieben am: 21.08.2014 16:04:35

Franz du bist der Beste. Ich habe mich durch tausende Foren geklickt und immer nur dumme Antworten bekommen. Deine Antwort war mehr als kompetent. Funktioniert alles. Super! Vielen Dank!!!


  

Betrifft: AW: VBA Wert Zelle in Userform von: Charly Neumann
Geschrieben am: 21.08.2014 16:42:16

Wenn du mir jetzt noch sagst wie ich einen Löschen Button ersetellen kann, der NUR bei Bedarf das Wort in der Excel Tabelle löscht, küss ich dir die Füße :-)

Der Löschen Button sollte dann allerding parallel zu den anderen Zeilen "wandern" und dann Einträge aus den Spalten B und C löschen in der jeweiligen Zeile, wo sich auch die anderen gerade befinden.

Hoffe das ist so einigermaßen verständlich...


  

Betrifft: AW: VBA Wert Zelle in Userform von: fcs
Geschrieben am: 22.08.2014 09:42:58

Hallo Charly,

mit den nachfolgenden Ergänzungen sollte auch das Löschen funktionieren.

Gruß
Franz

'Userform-Code
Private Sub CommandButton1_Click()
  'Wert in Spalte B in Textbox1 einlesen
  With CommandButton1
      TextBox1.Value = Cells(Val(.Tag), 2).Text   ' oder .Value
      .Tag = Val(.Tag) + 1                'nächste Einlesezeile setzen
  End With
  CommandButton3.Tag = 2 'angezeigter Wert steht in dieser Spalte
End Sub

Private Sub CommandButton2_Click()
  'Wert in Spalte C in Textbox1 einlesen
  With CommandButton2
      TextBox1.Value = Cells(Val(.Tag), 3).Text   ' oder .Value
      .Tag = Val(.Tag) + 1                'nächste Einlesezeile setzen
  End With
  CommandButton3.Tag = 3 'angezeigter Wert steht in dieser Spalte
End Sub
  
Private Sub CommandButton3_Click()
  'Löschen in Spalten B oder C
  Dim Zeile As Long, Spalte As Long
  Spalte = Val(CommandButton3.Tag)
  Select Case Spalte
    Case 0
      'do nothing
    Case 2 'löschen in Spalte B
      Zeile = Val(CommandButton1.Tag) - 1
    Case 3 'löschen in Splate C
      Zeile = Val(CommandButton2.Tag) - 1
  End Select
  If Spalte > 0 Then
    With Cells(Zeile, Spalte)
      If MsgBox("Inhalt in Zelle """ & .Address(False, False, xlA1) & """ löschen?", _
        vbQuestion + vbOKCancel, "Zellinhalt löschen") = vbOK Then
          .ClearContents
      End If
    End With
  End If
End Sub

Private Sub UserForm_Initialize()
  '
  CommandButton1.Tag = 1            'Startzeile für das Einlesen der Werte aus Spalte B
  CommandButton2.Tag = 1            'Startzeile für das Einlesen der Werte aus Spalte C
  Call CommandButton1_Click   '1. Wert einlesen
End Sub



  

Betrifft: AW: VBA Wert Zelle in Userform von: Charly Neumann
Geschrieben am: 22.08.2014 12:09:28

Du bist ein Genie. Ohne dich hätte ich das alles niemals geschafft. Wie kann ich erreichen, dass er nicht in Spalte B oder C löscht, sondern in beiden Spalten?


  

Betrifft: AW: VBA Wert Zelle in Userform von: fcs
Geschrieben am: 22.08.2014 14:55:36

Hallo Charly,

dein letzte Frage läßt etwas Spielraum für unterschiedliche Interpretationen.
Ich hab es jetzt so interpretiert, dass in der Zeile, deren Wert in B oder C in Textbox1 angezeigt wird, die Inhalte in Spalte B und C gelöscht werden.

Gruß
Franz

Private Sub CommandButton3_Click()
  'Löschen in Spalten B oder C
  Dim Zeile As Long, Spalte As Long, Zelle_B As Range, Zelle_C As Range
  Spalte = Val(CommandButton3.Tag)
  Select Case Spalte
    Case 0
      'do nothing
    Case 2 'löschen in Spalte B und C
      Set Zelle_B = Cells(Val(CommandButton1.Tag) - 1, 2)
      Set Zelle_C = Cells(Val(CommandButton1.Tag) - 1, 3)
'      Set Zelle_C = Cells(Val(CommandButton2.Tag) - 1, 3)
    Case 3 'löschen in Splate B und C
'      Set Zelle_B = Cells(Val(CommandButton1.Tag) - 1, 2)
      Set Zelle_B = Cells(Val(CommandButton2.Tag) - 1, 2)
      Set Zelle_C = Cells(Val(CommandButton2.Tag) - 1, 3)
  End Select
  If Spalte > 0 Then
      If MsgBox("Inhalt in Zelle """ & Zelle_B.Address(False, False, xlA1) _
        & """ und """ & Zelle_C.Address(False, False, xlA1) & """ löschen?", _
        vbQuestion + vbOKCancel, "Zellinhalt löschen") = vbOK Then
          Zelle_B.ClearContents
          Zelle_C.ClearContents
      End If
  End If
End Sub



  

Betrifft: AW: VBA Wert Zelle in Userform von: Charly Neumann
Geschrieben am: 22.08.2014 15:38:32

Perfekt! Genau richtig interpretiert! Mal so ne Frage: Woher hast du diese umfangreichen Kenntnisse und was veranlasst dich diese kostenfrei mit anderen zu teilen? Bitte doch Kurse an oder so!


  

Betrifft: AW: VBA Wert Zelle in Userform von: fcs
Geschrieben am: 22.08.2014 15:55:50

Hallo Charly,

Mal so ne Frage: Woher hast du diese umfangreichen Kenntnisse und was veranlasst dich diese kostenfrei mit anderen zu teilen?

Kenntnisse: über 20 Jahre Anwendung von Excel inkl. Makroprogrammierung
Excel ist für mich auch Hobby und Gehirnjogging für den Logikteil.

Gruß
Franz


  

Betrifft: AW: VBA Wert Zelle in Userform von: Charly Neumann
Geschrieben am: 22.08.2014 16:33:42

Einfach cool. Du hast richtig was drauf! Ich habe da mal noch ne Frage. Wenn es dir zuviel wird, sag es einfach. Also:

Da es mich nervt jedes Mal nach der Eingabe den Text wieder manuell aus der Textbox zu löschen, habe ich diesen Code:

Private Sub CommandButton4_Click()
    TextBox3.Text = ""
End Sub
Darüberhinaus habe ich ja jetzt, dank dir, den "Next" Schalter, der mir das nächste Wort aus Spalte B in eine ANDERE TExtbox wirft. Jetzt würde ich sehr gerne meine Löschfunktion in den "Next" Schalter integrieren. Hoffe das ist einigermaßen verständlich...


  

Betrifft: AW: VBA Wert Zelle in Userform von: fcs
Geschrieben am: 22.08.2014 16:46:29

Hallo Charly,

du zeigst aber sehr wenig Experimentierfreude.
Am Ende des Code bzw. an passender Position des Codes für den "Next"-Schalter fügst du die Zeile

    TextBox3.Text = ""
ein.

Gruß
Franz


  

Betrifft: AW: VBA Wert Zelle in Userform von: Charly Neumann
Geschrieben am: 22.08.2014 17:21:52

Hallo Franz,

doch doch Experimentierfreude ist vorhanden. Habe mir immerhin ein komplettes Vokabellernprogramm mit VBA und deiner Hilfe geschrieben. Und die Codes von dir habe ich auch immer nur als Grundlage genutzt und dann an meine Zwecke angepasst. Das ganze obwohl ich faktisch null Ahnung oder nur sehr wenig (im Studium mal kurz) habe.

Hatte es auch so probiert...

Wusste nur nicht an welcher Stelle ich es einfügen muss...

Klappt aber jetzt. Also nochmal vielen vielen Dank.
Werde dich jetzt erstmal in Ruhe lassen :-)

Gruß
Charly


 

Beiträge aus den Excel-Beispielen zum Thema "VBA Wert Zelle in Userform"