Microsoft Excel

Herbers Excel/VBA-Archiv

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

Abfrage beim übertragen

Betrifft: Abfrage beim übertragen von: Stefan Glander
Geschrieben am: 03.11.2014 20:53:24

Guten Abend Forum,
vorweg, ich möchte nicht das jemand anderes für mich meine Arbeit macht. Ich versuche VBA zu lernen.
So nun mein Problem:
Ich habe 9 TextBoxen auf einer Userform.
Die Daten übertrage ich mit einem Commandbutton auf das Tabellenblatt2.
Mein Codeschnippsel sieht wie folgt aus.

Private Sub CommandButton1_Click()
Dim lngLR As Long
Dim intCount As Integer
Dim rngData As Range

lngLR = Worksheets("Tabelle2").Cells(Rows.Count, 2).End(xlUp).Row + 1

Set rngData = Worksheets("Tabelle2").Cells(lngLR, "B").Resize(1, 9)

For intCount = 1 To rngData.Cells.Count
rngData.Cells(intCount).Value = Me.Controls("TextBox" & intCount).Value
Next intCount
End Sub

Nun meine konkreten Fragen.
Ich möchte gerne die Daten nach Abhänigkeit der Eingabe in Texbox1 auf verschiedene Datenblätter speichern.
Beispiel: Steht in TextBox1 grün sollen die Daten ins Tabellenblatt Grün eingetragen werden, bei rot ins Blatt rot.
Meine 2. Frage dazu, es sollen in TextBox1 nur 5 Werte eingegeben werden können.
Kann ich das irgendwie mit einer Auswahlliste vorgeben?

Ich hoffe auf Hilfe.
Gruß
Stefan

  

Betrifft: AW: Abfrage beim übertragen von: Daniel
Geschrieben am: 03.11.2014 20:57:42

Hi



Wenn in der Textbox1 der Name des Tabellenblatts steht auf dem die Werte eingetragen werden sollen, dann ersetze Worksheets("Tabelle2") durch Worksheets(Textbox1.Text)

Wenns nur 5 feste Auswahlmöglichkeiten geben soll, dann ist eine ListBox oder eine Combobox die bessere Alternative.
Hier kannst du die Auswahlmöglichkeiten fest vorgeben.

Gruß Daniel


  

Betrifft: AW: Abfrage beim übertragen von: Stefan Glander
Geschrieben am: 03.11.2014 21:32:46

Hallo Daniel,
danke für Deine Hilfe.
Habe das nun folgendermaßen gelöst:

Private Sub UserForm_Initialize()
ListBox1.ColumnCount = 1 ' Gibt an wie viele Spalten der Bereiches angezeigt werden sollen
ListBox1.RowSource = "Tabelle2!K1:K5" ' Definiert den Bereich
ListBox1.ColumnWidths = "20" ' Gibt an wie Breit die Ausgabe der einzelnen Zellen sein soll
End Sub
Private Sub CommandButton1_Click()
Dim lngLR As Long
Dim intCount As Integer
Dim rngData As Range

lngLR = Worksheets(ListBox1.Text).Cells(Rows.Count, 2).End(xlUp).Row + 1

Set rngData = Worksheets(ListBox1.Text).Cells(lngLR, "B").Resize(1, 9)

For intCount = 1 To rngData.Cells.Count
rngData.Cells(intCount).Value = Me.Controls("TextBox" & intCount).Value
Next intCount
End Sub
Einziger Schönheitsfehler... wie bekomme ich den Wert den ich in der Listbox ausgewählt habe auch in das betreffend Tabellenblatt / die dazugehörigen Zellen
Im Moment schreibt er mir nur die Daten der TextBoxen in die Tabelle

Gruß
Stefan


  

Betrifft: AW: Abfrage beim übertragen von: Daniel
Geschrieben am: 03.11.2014 21:40:56

Hi
wenn du konsequent gearbeitet hast und die Textbox1 durch die Listbox1 ersetzt hast, dann darf es die Textbox1 nicht mehr geben und deine erste Textbox ist die Textbox2.
Dh deine Schleife sollte dann bei 2 beginnen und und die erste Zelle müsste leer bleiben.

Dann kannst du ja den Listboxtext direkt in die Entsprechende Zelle schreiben, halt ausserhalb der Schleife:

...
rngData.Cells(1).Value = Listbox1.Text
For intCount = 2 To rngData.Cells.Count
rngData.Cells(intCount).Value = Me.Controls("TextBox" & intCount).Value
Next intCount
End Sub
als DirtyLittleTrick gäbs noch die Variante, dass du deine ListBox1 in Textbox1 umbenennst, dann kannst du sie normal über die Schleife wie die anderen Textboxen ansprechen (die Eigenschaft Text gibt es ja bei beiden Steuerelementtypen)
Für die Programmierung ist das kein Problem, weil des den Steuerelementen egal ist, wie sie benannt werden, aber für denjenigen der den Code list könnte es verwirrend sein, deswegen ist von sowas eher abzuraten.

Gruß Daniel


  

Betrifft: Erledigt, Danke von: Stefan Glander
Geschrieben am: 03.11.2014 21:41:49

hab es selbst rausbekommen.

Gruß
Stefan


 

Beiträge aus den Excel-Beispielen zum Thema "Abfrage beim übertragen"