Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1824to1828
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
erste freie Spalte finden und füllen
06.04.2021 09:13:05
Christian
Hallo, ich habe eine UserForm erstellt in der man Werte (manuell) eintragen kann. Diese Werte müssen dann in eine Tabelle übertragen werden. Das funktioniert auch soweit. Mein Problem ist, dass mit jeder Abfrage eine neue Spalte gefüllt werden muss. D.h. User 1 gibt Daten in UserForm ein, übergibt diese dann in das Tabellenblatt. Fertig! User 2 gibt wieder Daten in die UserForm.....und immer so weiter. Mir ist aber die Anzahl der User nicht bekannt. Das Programm soll daher immer die letzte freie Spalte suchen und in Zeile 1, 2, 17 und 18 bestimmte Werte aus der UserForm übermitteln.
Wie ich die lezte freie Spalte ermittel ist mir über das VBA bekannt
Dim Spalte As Long
Spalte = ThisWorkbook.Worksheets("DB_TB").Cells(1, Columns.Count).End(xlToLeft).Column + 1
bekannt. Allerding möchte ich jetzt genau dort die Zeile 1,2,17 und 18 Ansprechen, damit die Werte aus der UserForm dort übermittelt werden können.
Aktuell habe ich das so geschreiben (was aber nicht funktioniert) (DB_TB ist das Datenblatt in dem die Werte übermittelt werden sollen).
Dim Spalte As Long
Spalte = ThisWorkbook.Worksheets("DB_TB").Cells(1, Columns.Count).End(xlToLeft).Column + 1
ThisWorkbook.Worksheets("DB_TB").Cells(Spalte, 1) = "IA_" & TextBox2.Text
ThisWorkbook.Worksheets("DB_TB").Cells(Spalte, 2) = TextBox5.Text
ThisWorkbook.Worksheets("DB_TB").Cells(Spalte, 17) = "PO_" & TextBox2.Text
ThisWorkbook.Worksheets("DB_TB").Cells(Spalte, 18) = TextBox6.Text
Wie schaffe ich es jetzt, dass nach Ermittlung der ersten freie Spalte die Abfragen aus der UserForm dort eingetragen werden?
LG, Chris

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Cells()
06.04.2021 09:16:04
RPP63
Moin!
Korrektes Ansprechen mittels Cells() geht so:
Cells(Zeile, Spalte)
Gruß Ralf
AW: Cells()
06.04.2021 09:25:41
Christian
Hallo Ralf, danke für die schnelle Antwort.
Wie ich eine Zeile anspreche weiß ich. Kenne auch das VBA für suchen der ersten freien Zeile in einer bestimmten Spalte.
Allerdings weiß ich in diesem Fall nicht, welche Spalte als nächstes frei ist und somit angesprochen wird. Diese Variable ist mir unbekannt, da am Tag zwischen 4 bis 20 neue Spalten gefüllt werden müssen. D.h. heute sind es die Spalten A bis H, morgen sollte es dann I bis T sein (oder mehr oder weniger). Ich weiß aber nie, wo die nächste freie Spalte ist, wenn der nächste User über die UserForm arbeitet.
LG, Chris
Anzeige
AW: Cells()
06.04.2021 09:30:39
Werner
Hallo,
wie ich eine Zeile anspreche weiß ich
Hier meinst du wohl Zelle und offensichtlich weißt du das nicht.
Ralf hat dir doch geschrieben Cells(Zeile, Spalte)
Bei dir: ThisWorkbook.Worksheets("DB_TB").Cells(Spalte, 1) = "IA_" & TextBox2.Text
Du verwendest die Variable mit der ersten freien Spalte aber als Zeile und nicht als Spalte
ThisWorkbook.Worksheets("DB_TB").Cells(1, Spalte) = "IA_" & TextBox2.Text
Gruß Werner
AW: Cells()
06.04.2021 09:40:25
Christian
Hallo Werner,
entschuldigung für das Mißverständnis. Selbstverständlich habe ich jetzt die Daten getauscht (Zelle, Spalte). Allerdings werden die Daten aus der UserForm
noch immer nicht übertragen bzw. nicht die nächste freie Spalte gefüllt. Diese bleibt leer. Ist denn das VBA soweit korrekt und könnte das an etwas anderem liegen?
Dim Spalte As Long
Spalte = ThisWorkbook.Worksheets("DB_TB").Cells(1, Columns.Count).End(xlToLeft).Column + 1
ThisWorkbook.Worksheets("DB_TB").Cells(1, Spalte) = "IA_" & TextBox2.Text
ThisWorkbook.Worksheets("DB_TB").Cells(2, Spalte) = TextBox5.Text
ThisWorkbook.Worksheets("DB_TB").Cells(17, Spalte) = "PO_" & TextBox2.Text
ThisWorkbook.Worksheets("DB_TB").Cells(18, Spalte) = TextBox6.Text
Oder fehlt dort noch ein bestimmter Verweis?
LG, Chris
Anzeige
AW: Cells()
06.04.2021 09:45:18
RPP63
Es wird natürlich immer in die gleiche Spalte eingetragen.
Willst Du einen "Flattersatz"?
Heißt, sind die jeweiligen Spalten in den Zeilen 1, 2, 17, 18 unterschiedlich?
Dann musst Du halt für jede Zeile das xlToLeft (angepasst) neu ermitteln.
AW: Cells()
06.04.2021 09:49:35
Werner
Hallo,
kann es sein, dass du dich bei Ausführen des Codes auf einem anderen Tabellenblatt als "DB_TB" befindest?
Dann ermittelst du nämlich die erste freie Spalte auf dem Blatt, auf dem du dich gerade befindest. Du müsstest vor dem Columns.Count auch noch das entsprechende Tabellenblatt angeben.
Oder verwende ein With - End With. Damit wird auf das im With angegebene Blatt referenziert, indem vor den Range-Objekten (Cells, Rows, Columns...) ein Punkt gesetzt wird.
  • Dim Spalte As Long
    With ThisWorkbook.Worksheets("DB_TB")
    Spalte = .Cells(1, .Columns.Count).End(xlToLeft).Column + 1
    .Cells(1, Spalte) = "IA_" & TextBox2.Text
    .Cells(2, Spalte) = TextBox5.Text
    .Cells(17, Spalte) = "PO_" & TextBox2.Text
    .Cells(18, Spalte) = TextBox6.Text
    End With

  • Gruß Werner
    Anzeige
    Da eher nicht davon auszugehen ist …
    06.04.2021 10:02:25
    auszugehen
    … dass die Anzahl der verfügbaren Spalten in verschiedenen Blättern in ThisWorkbook 2^14 ist, müsste der Code problemlos laufen, denn Columns.Count ist in jedem Blatt dieser Mappe gleich, nämlich "nur" eine Zahl und kein Range.
    Daher dürfte es keine Probleme mit der Referenzierung geben, obwohl ich Dir prinzipiell natürlich Recht gebe, Werner.
    Ich warte mal auf die Antwort zu meinem Flattersatz.
    stimmt natürlich... o.w.T.
    06.04.2021 10:09:28
    Werner
    AW: Da eher nicht davon auszugehen ist …
    06.04.2021 10:12:30
    auszugehen
    Ich war gerade dabei die Antwort zum Flattersatz zu schicken, da kam Werner mit der Lösung. Nein, es handelt sich nicht um einen Flattersatz. Die vorgegebenen Zellen sind immer gleich, es handelt sich immer um Ziffern und ob die jetzt Rechts- oder Linksbündig stehen ist erst einmal sekundär. Wichtig ist, dass die Zahlen erscheinen. Es sei denn, mit "Flattersatz" ist noch etwas anderes Verbunden?
    LG, Chris
    Anzeige
    Der Code
    06.04.2021 10:21:19
    RPP63
    Der Code ist jedenfalls soweit korrekt.
    Kannst Du mal die (evtl. anonymisierte) Datei hochladen?

    303 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige