Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Werte in Tabelle schreiben

Werte in Tabelle schreiben
17.03.2017 13:20:56
Thomas
Hallo an alle,
ich habe hier eine Tabelle
(siehe Anhang: https://www.herber.de/bbs/user/112244.xlsm )
und möchte Folgendes umsetzen.
Erklärung der Funktionsweise:
Nach öffen der Tabelle soll in Spalte A eine Zelle ausgewählt werden.
Durch klicken auf "Daten Eingabe" öffnet sich eine Userform.
Im Label1 steht der ausgewählte Wert. Über die TextBoxen1 bis 3 sollen Werte eingeben werden die dann in Abhängigkeit vom ausgewählten Wert in die Spalten dahinter eingetragen werden sollen.
Qusie finde Zeile in deren Spalte A der sich der ausgewählte Wert befindet und schreibe die Werte aus den Textbox in die erste freie Spalte am Ende.
D.h. beim ersten Mal auswählen des Wertes 1, die Werte der TextBoxen in Zeile 2 Spalte B, C, und D schreiben
beim zweiten Mal auswählen des Wertes 1, die Werte der TextBoxen in Zeile 2
Spalte E, F, und G.
Kann mir da jemand behilflich sein.
Ich scheitere nämlich an der Auswahl der Zeile. Für 1 = Zeile 2 für 2 Zeile 3 usw.
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Werte in Tabelle schreiben
17.03.2017 13:34:18
Crazy
Hallo
ohne jetzt deine Datei gesehen zu haben
du klickst in eine Zeile der Spalte A
und in diese Zeile soll dann später die Eintragung stattfinden?
dann kannst du doch ActiveCell.Row verwenden
MfG Tom
und mit columns.count).End(xlToLeft).Column
17.03.2017 13:38:58
Max2

AW: Werte in Tabelle schreiben
17.03.2017 13:38:29
ChrisL
Hi
Private Sub CommandButton1_Click()
Dim findZeile As Long, letzteSpalte As Long
With Worksheets("Tabelle1")
findZeile = ActiveCell.Row
letzteSpalte = .Cells(findZeile, Columns.Count).End(xlToLeft).Column
.Cells(findZeile, letzteSpalte + 1) = TextBox1
.Cells(findZeile, letzteSpalte + 2) = TextBox2
.Cells(findZeile, letzteSpalte + 3) = TextBox3
End With
UserForm1.Hide
End Sub

cu
Chris
Anzeige
AW: Werte in Tabelle schreiben
17.03.2017 15:41:46
Thomas
So eingefügt, ausprobiert und Fehlermeldung:" Anwendungs- oder objektdefinierter Fehler" erhalten ?
Debugen markiert die 1. .Cells-Reihe
AW: Werte in Tabelle schreiben
17.03.2017 15:49:33
ChrisL
No comment...
Userbild
AW: Werte in Tabelle schreiben
17.03.2017 15:53:42
Thomas
Hm... ich entschuldige mich für meine Blödheit.....
Anzeige
AW: Werte in Tabelle schreiben
20.03.2017 12:20:13
Thomas
Hallo gibt es auch die Möglichkeit die Reihe über den Inhalt eines Label zu finden ?
Also nicht über ActiveCell
Private Sub CommandButton1_Click()
Dim findZeile As String, letzteSpalte As String
With Worksheets("Change Request")
findZeile = ActiveCell.Row  ' Reihe soll über den Inhalt eines Label gefunden werden.. _

letzteSpalte = .Cells(findZeile, Columns.Count).End(xlToLeft).Column
.Cells(findZeile, letzteSpalte + 1) = TextBox5
.Cells(findZeile, letzteSpalte + 2) = TextBox1
.Cells(findZeile, letzteSpalte + 3) = ComboBox2
.Cells(findZeile, letzteSpalte + 4) = DTPicker1
End With
End Sub

Anzeige
AW: Werte in Tabelle schreiben
20.03.2017 12:37:47
ChrisL
Hi Thomas
Beachte den Datentyp (im Beispiel Ganzzahl Typ "Long" resp. mit CLng() umgewandelt)...
Private Sub CommandButton1_Click()
Dim findZeile As Long, letzteSpalte As Long
With Worksheets("Tabelle1")
.Unprotect
findZeile = Application.Match(CLng(Label1), .Columns(1))
letzteSpalte = .Cells(findZeile, Columns.Count).End(xlToLeft).Column
.Cells(findZeile, letzteSpalte + 1) = TextBox1
.Cells(findZeile, letzteSpalte + 2) = TextBox2
.Cells(findZeile, letzteSpalte + 3) = TextBox3
.Protect
End With
UserForm1.Hide
End Sub

cu
Chris
Anzeige
AW: Werte in Tabelle schreiben
20.03.2017 13:04:59
Thomas
Danke Schön... funzt wie gewünscht...
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Werte in Tabelle schreiben mit Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne Deine Excel-Datei, in der Du Werte in die Tabelle eintragen möchtest.
  2. Füge eine Userform hinzu:
    • Gehe zu Entwicklertools > Visual Basic.
    • Rechtsklicke auf VBAProject (DeineDateiName) und wähle Einfügen > UserForm.
  3. Füge Steuerelemente hinzu:
    • Füge ein Label (Label1) hinzu, um den ausgewählten Wert anzuzeigen.
    • Füge drei TextBoxen (TextBox1, TextBox2, TextBox3) hinzu, um die Werte einzugeben.
    • Füge einen CommandButton (CommandButton1) hinzu, um die Daten zu speichern.
  4. Füge den folgenden VBA-Code in das UserForm ein:

    Private Sub CommandButton1_Click()
       Dim findZeile As Long, letzteSpalte As Long
       With Worksheets("Tabelle1")
           findZeile = Application.Match(CLng(Label1), .Columns(1))
           letzteSpalte = .Cells(findZeile, Columns.Count).End(xlToLeft).Column
           .Cells(findZeile, letzteSpalte + 1) = TextBox1
           .Cells(findZeile, letzteSpalte + 2) = TextBox2
           .Cells(findZeile, letzteSpalte + 3) = TextBox3
       End With
       UserForm1.Hide
    End Sub
  5. Teste die Userform:
    • Klicke auf "Daten Eingabe", um die Userform zu öffnen.
    • Gib die Werte in die TextBoxen ein und klicke auf den Button, um die Werte in die Tabelle zu schreiben.

Häufige Fehler und Lösungen

  • Fehler: Anwendungs- oder objektdefinierter Fehler

    • Lösung: Überprüfe, ob der Name des Arbeitsblattes korrekt ist und ob die Zellen, auf die zugegriffen wird, existieren. Vergewissere Dich, dass die Werte in der ersten Spalte (Column(1)) tatsächlich vorhanden sind.
  • Fehler: Ungültiger Datentyp

    • Lösung: Stelle sicher, dass der Datentyp der Werte, die Du suchst, mit dem Datentyp der Spalte übereinstimmt. Nutze CLng() zur Umwandlung, wenn nötig.

Alternative Methoden

  • Direktes Eintragen in die Tabelle: Anstatt eine Userform zu verwenden, kannst Du auch direkt in die Zellen der Tabelle schreiben. Klicke auf eine Zelle und verwende ein einfaches Makro, um die Eingaben zu speichern.

  • Verwendung von Excel-Formeln: Wenn Du nur einfache Berechnungen durchführen möchtest, kannst Du auch Excel-Formeln nutzen, um Werte in der Tabelle zu manipulieren, ohne VBA zu verwenden.


Praktische Beispiele

  • Beispiel 1: Du hast eine Tabelle mit Namen in Spalte A und möchtest die Alterswerte in die Spalten B, C und D eintragen. Der Code könnte ähnlich wie folgt aussehen:

    Private Sub CommandButton1_Click()
       Dim findZeile As Long, letzteSpalte As Long
       With Worksheets("Tabelle1")
           findZeile = Application.Match(Label1.Caption, .Columns(1), 0)
           letzteSpalte = .Cells(findZeile, Columns.Count).End(xlToLeft).Column
           .Cells(findZeile, letzteSpalte + 1) = TextBox1
           .Cells(findZeile, letzteSpalte + 2) = TextBox2
           .Cells(findZeile, letzteSpalte + 3) = TextBox3
       End With
       UserForm1.Hide
    End Sub
  • Beispiel 2: Wenn Du eine Liste von Bestellungen hast und Werte in eine Tabelle eintragen möchtest, kannst Du die gleiche Technik mit verschiedenen Userform-Steuerelementen verwenden.


Tipps für Profis

  • Verwende Option Explicit: Füge am Anfang Deines Moduls Option Explicit hinzu, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
  • Fehlerbehandlung: Implementiere On Error Resume Next und On Error GoTo 0, um Fehler im Code besser zu handhaben.
  • Benutzerfreundliche Formulare gestalten: Achte darauf, dass Deine Userform klar strukturiert ist. Füge Anweisungen hinzu, um den Benutzern zu helfen.

FAQ: Häufige Fragen

1. Wie finde ich die Zeile über den Inhalt eines Labels? Du kannst die Application.Match-Funktion verwenden, um die Zeile zu finden, in der der Inhalt des Labels steht.

2. Welche Excel-Version benötige ich für die Verwendung von VBA? VBA ist in den meisten Excel-Versionen ab Excel 2000 verfügbar. Stelle sicher, dass Du die Registerkarte "Entwicklertools" aktiviert hast, um auf die VBA-Umgebung zugreifen zu können.

3. Kann ich auch mehrere Userforms verwenden? Ja, Du kannst mehrere Userforms erstellen, um verschiedene Dateneingaben zu verwalten. Jede Userform kann für unterschiedliche Tabellen oder Datenstrukturen angepasst werden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige