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

VBA Neue Zeile an Zeile 11 einfügen

Forumthread: VBA Neue Zeile an Zeile 11 einfügen

VBA Neue Zeile an Zeile 11 einfügen
18.02.2025 10:26:47
Sommersonne97
Hallo zusammen!

Ich möchte gern via VBA einen Code schreiben, der Zeilen ab Zeile 11 mit Daten aus Textboxen einer UserForm befüllen.

Das klappt soweit mit diesem Code:

'ZEILE MIT DATEN BEFÜLLEN
'Auf welchem Blatt
Set ws = ThisWorkbook.Sheets("Übersicht")

'Letzte Zeile suchen
Dim letzteZeile As Long

letzteZeile = ws.Cells(ws.Rows.Count, 1).End(xlUp).row + 1

ws.Rows(11).Insert Shift:=xlDown

'Datenübertragung aus TextBoxen des UserForms
ws.Cells(letzteZeile + 1, 3).Value = Me.TextBox1.Value
ws.Cells(letzteZeile + 1, 4).Value = Me.TextBox2.Value
ws.Cells(letzteZeile + 1, 6).Value = Me.TextBox3.Value

Allerdings habe ich folgendes Problem:
Es wird oberhalb Zeile 11 eine neue Zeile befüllt. Ich würde das aber gerne unterhalb einfügen lassen - geht das?
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Neue Zeile an Zeile 11 einfügen
18.02.2025 10:34:40
Oberschlumpf
Hi,

ws.Cells(ws.Rows.Count, 1).End(xlUp).row

bezieht sich auf Spalte 1, und in Spalte 1 in deiner Datei ist nicht Zeile 11 die letzte, benutzte Zeile.
Änder also im obigen Befehl die 1 um in die richtige Spaltennummer, oder...zeig per Upload eine Bsp-Datei mit genügend Bsp-Daten in den richtigen Zellen.

Hilfts?

Ciao
Thorsten
Anzeige
AW: VBA Neue Zeile an Zeile 11 einfügen
18.02.2025 11:38:14
Yal
Hallo Sonne,

klare Sache.
Wenn
ws.Rows(11).Insert Shift:=xlDown
Dir eine Zeile vor der Zeile 11 einfügt, dann
ws.Rows(12).Insert Shift:=xlDown
fügt eine Zeile vor der Zeile 12, also nach der Zeile 11.

Beachte nur: diese Zeilenummer ist immer ein Momentaufnahme. Nach dem Einfügen von "Zeile nach 11", ist die Zeile 12 nun 13. usw.

VG
Yal
Anzeige
AW: VBA Neue Zeile an Zeile 11 einfügen
18.02.2025 14:41:56
Piet
Hallo

nachdem ich mir alle Antworten durchgelesen habe komme ich zur folgenden Überlegung.
Dein Code in der 1. Anfrage ist doch schon richtig, bedarf nur zwei Korrekturen. Dann klappt es.

Wie Thorsten schon schrieb, bei LastZell die richtige Spalte benutzen. z.B. Spalte 3,4 oder 6
Den -ws.Rows(11).Insert- Befehl löschen! Du willst die Daten ja UNTEN anhängen.
Oder irre ich mich da?? Bin gespannt auf deine Rückmeldung. -> For Next ist überflüssig!!

mfg Piet
Anzeige
AW: VBA Neue Zeile an Zeile 11 einfügen
18.02.2025 12:28:14
Sommersonne97
Hallo Yal,

danke, das hilft mir schon mal das Problem besser zu verstehen!

Gibt es einen Code, der das wiederholt?

Also dass es fortlaufend passiert?

Danke dir.
AW: VBA Neue Zeile an Zeile 11 einfügen
18.02.2025 12:33:52
Yal
Hallo,

ja, das gibt es. Selbstverständlich. Es sind sogenannten Schleifen.

Es gibt die For-Schleife:
For i = 1 To 10
... 'hier kommt die Aufgabe die 10 mal (1 bis 10) wiederholt werden muss
Next

und die While (solang ...), die ich Anfänger abraten wurde, weil schnell zu endlosen Schleifen führt.

Aber beachte, dass wir gern für gezielte Problem helfen, aber für den Aufbau einer grundlegende VBA-Kompetenz auf dich selbst bestellt bist.

VG
Yal
Anzeige
AW: VBA Neue Zeile an Zeile 11 einfügen
18.02.2025 12:40:07
Sommersonne97
Hi Yal,

ich möchte auch gar nicht, dass mir ein gesamter Code geschrieben wird.. Mir helfen Anreize, da ich das gerne selbst lernen und lösen möchte.

Die While Schleifen teste ich aus, da ich eben nicht möchte das dann auf einmal von 11-x alle Zeilen beschriftet werden. Das hatte ich die Tage schon :D

Viele Grüße!
Anzeige
AW: VBA Neue Zeile an Zeile 11 einfügen
18.02.2025 14:26:26
Yal
wenn Du soweit bist, kannst Du deinen Code posten. Dann können wir dir Vorschläge machen.

For-Schleife: wenn der Anzahl an Wiederholung von Anfang an bekannt ist.

While-Schleife: wenn etwas wiederholt werden soll, bis ein bestimmte Situation erreicht wird. Es ist dabei zu achten, dass innerhalb der Schleife (also zwischen "Do While.." und "Loop"), die Variable, die das Ende der Schleife einleiten soll, geändert wird. Sonst: endlose Schleife.

Tipp: speichere immer deine Datei, bevor Du einen Code anstosst, der eine While-Schleife beinhaltet.

VG
Yal
Anzeige
AW: VBA Neue Zeile an Zeile 11 einfügen
18.02.2025 10:47:17
Sommersonne97
Hi Oberschlumpf,

leider nein.

Ich schicke mal den ganzen Code.

Ziel ist es durch erzeugen eines neuen Blattes eine Zeile auf einem Übersichtsblatt ab Zeile 11 fortfolgend nach unten mit den Daten aus Userform zu befüllen.
Dann bei neuen Daten Zeile 12,13,14 usw., ohne, dass die Zeile überschrieben wird mit vorherigen Daten.

Private Sub CommandButton1_Click()

Dim Blattcount As Integer
Dim NeuesBlatt As Worksheet
Dim BlattName As String
Dim Thema As String
Dim Antragssteller As String
Dim Start As String
Dim neueZeile As Long
Dim ws As Worksheet


'Eingabewerte aus den TextBoxen holen
Thema = TextBox1.Value
Antragssteller = TextBox2.Value
Start = TextBox3.Value

'Überprüfen ob alle Felder ausgefüllt sind
If Thema = "" Or Antragssteller = "" Or Start = "" Then
MsgBox "Bitte alle Felder ausfüllen!", vbExclamation
Exit Sub

End If

'Zähle die Blätter im Arbeitsbuch
Blattcount = Sheets.Count

' Referenz auf das bestehende Blatt, das kopiert werden soll
Set ws = ThisWorkbook.Sheets("Blanko")

' Bestimmen der höchsten Nummer der bestehenden Blätter
letzteNummer = 0
For Each Blatt In ThisWorkbook.Sheets
If IsNumeric(Blatt.Name) Then
If CInt(Blatt.Name) > letzteNummer Then
letzteNummer = CInt(Blatt.Name)
End If
End If
Next Blatt

' Neuer Name für das Blatt
neuerName = CStr(letzteNummer + 1)

' Kopieren des bestehenden Blattes und Umbenennen
ws.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
Set NeuesBlatt = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
NeuesBlatt.Name = neuerName

'Übertrage die Werte in die Zellen des neuen Blattes
NeuesBlatt.Range("K6").Value = TextBox1
NeuesBlatt.Range("G4").Value = TextBox2
NeuesBlatt.Range("G5").Value = TextBox3

'ZEILE MIT DATEN BEFÜLLEN
'Auf welchem Blatt
Set ws = ThisWorkbook.Sheets("Übersicht")

'Letzte Zeile suchen
Dim letzteZeile As Long

letzteZeile = ws.Cells(ws.Rows.Count, 11).End(xlUp).row

ws.Rows(11).Insert Shift:=xlDown

'Datenübertragung aus TextBoxen des UserForms
ws.Cells(letzteZeile + 1, 3).Value = Me.TextBox1.Value
ws.Cells(letzteZeile + 1, 4).Value = Me.TextBox2.Value
ws.Cells(letzteZeile + 1, 6).Value = Me.TextBox3.Value

'Formartierung übernehmen
FormatQuelleZeile = 9

For i = 11 To letzteZeile
ws.Rows(i).Interior.Color = ws.Rows(9).Interior.Color
ws.Rows(i).Font.Name = ws.Rows(9).Font.Name
ws.Rows(i).Font.Size = ws.Rows(9).Font.Size
ws.Rows(i).Font.Color = ws.Rows(9).Font.Color
ws.Rows(i).HorizontalAlignment = ws.Rows(9).HorizontalAlignment
ws.Rows(i).VerticalAlignment = ws.Rows(9).VerticalAlignment
Next i

'Schließe die UserForm, wichtig, damit jedes Mal ein leeres UserForm geöffnet wird
Unload Me

End Sub


Zeile 9 ist beschrieben und soll so bleiben, als Bsp. Demnach auch die Formatierung. Zeile 10 soll leer bleiben und dann ab 11 die Datenübertragung.
Weitergehend soll eigentlich auch noch in Spalte B jeder beschriebenen Zeile auch noch ein Link zum neu erzeugten Blattes entstehen.. das ist dann auch noch eine Herausforderung.. ebenso wie die Numerierung. Die in Spalte A forlaufend dann vom neuen Blatt übernommen werden soll..

Viele Grüße!
Anzeige
AW: VBA Neue Zeile an Zeile 11 einfügen
18.02.2025 11:12:45
Oberschlumpf
Hi,

und was soll ich jetzt damit?

Welchen Teil meines anderen Textes = "...oder...zeig per Upload eine Bsp-Datei mit genügend Bsp-Daten in den richtigen Zellen" hast du nicht gelesen?

Ciao
Thorsten
AW: VBA Neue Zeile an Zeile 11 einfügen
18.02.2025 12:26:18
Sommersonne97
Ich habe Dir lediglich die Sachlage erläutert. Wir sind in einem Forum. Nicht mehr und nicht weniger. Was hast du daran nicht "gelesen"? ;)
Anzeige
AW: VBA Neue Zeile an Zeile 11 einfügen
18.02.2025 15:21:57
Oberschlumpf
genau, wir sind in einem Forum...mit der Möglichkeit, dass der Fragende zum - noch - besseren Verständnis seines Problems eine Bsp-Datei per Upload zeigen könnte!
Aber ok, dir wird ja anderweitig weitergeholfen, wenn auch...das...bis jetzt ja auch nur ein Hin und Her an Ideen-Tausch, aber noch nicht wirklich problemlösend war (is nich böse gemeint! - an yal gerichtet) - ihr schafft das schon - auch ohne Beispiel-Datei von dir
Anzeige

Forumthreads zu verwandten Themen

Anzeige