Zellen über VBA einfügen

Valid

Newbie
Registriert
Nov. 2012
Beiträge
6
Hallo liebe Community,

ich melde mich wegen eines, für euch wahrscheinlich recht simplen Problems, welches ich momentan, als Neuling in VBA, noch nicht selber bewältigen kann.

Undzwar möchte ich verschiedene Datensätze anlegen. Wenn der Anwender weitere Datensätze, mehr als ich ursprünglich bereitstelle, einfügen möchte, soll er per Druck auf einen Button neue Datensätze anlegen können.

Per Makro sollen also automatisch Zeilen eingefügt werden, wobei wenn ich z.B.

C25:K25 selektiert habe und eine Zeile eingefügt habe, es anschließend bei C26:K26 passieren soll. Dies soll belieb oft wiederholbar sein, sodass belieb viele Zeilen eingefügt werden können.
An sich brauche ich also eine Zählerschleife.

Diese Funktion brauche ich, weil ich in einer Tabelle durchaus mehrfach gleichzeitig eine Zeilen an verschiedenen Stellen einfügen möchte. Mit einem normalen Zellen-Einfügen würde sich das Format sonst irgendwann verschieben.


LG Valid
 
Geht vielleicht eleganter, aber kopiere doch eine Zeile und füge sie dort ein wo du sie brauchst. Danach löschst du den Inhalt der neuen Zeile, dann bleiben die Formate der Zellen erhalten.
 
Hei,

es geht darum, dass ich auf der Seite mehrere Tabellen haben.
Wenn ich eine erweitere um eine neue Zeile, dann sollen die anderen auch um eine erweitert werden.
 
Ahh ok, willst du immer am Ende einer Tabelle einfügen oder mittendrin?

EDIT: Dann müsste man zu jeder Tabelle ein Offset ermitteln. An der Stelle wird dann eingefügt.
Beispiel:
Tabelle 1 hat 10 Zeilen
Tabelle 2 beginnt bei Zeile 12 (eine Leerzeile)

Wenn du jetzt einfügen willst (mitten in Tab1) in Zeile 7 dann verschiebt sich natürlich Tab2 um 1. Also wird Zeile 7 der Tab2, Offset von Tab2 + Einfügeposition von Tab1... 13+7
 
Zuletzt bearbeitet:
Stell es dir so vor:

Ich habe drei Tabellen und wenn ich die erste um eine Zeile erweitere, sollen die anderen beiden auch um eine erweitert werden.
 
Für weitere Tabellen verschiebt sich der Offset dann immer weiter. Der Offset muss immer erst nach dem Einfügen ermittelt werden.
 
Ja genau so ist das gemeint.
Wie baue ich das nun aber in ein Makro ein, dass dies automatisch passiert?

Kannst du mir das so simpel wie möglich erklären? Ich bin VBA-Neuling :D
 
Codeschnipsel kann ich dir nicht geben, da ich hier kein Excel habe.
Fragen:
Ist jede Tabelle mit einer Leerzeile getrennt?
Soll immer am Ende eingefügt werden?

Prinzip:
Füge eine Zeile in Tab1 ein. (Pos)
Dann suche in der Tabelle (Spalte A) nach einer Leerzelle.
Tab2 beginnt dann bei Offset+1.
Füge die Zeile bei (Offset+1+Pos) ein.
Dann suche in der Tabelle (Spalte A) nach einer weiteren Leerzelle.
Füge die Zeile bei (Offset+1+Pos) ein.

Wie man Leerzellen findet, kann man ergooglen...
http://excelwelt.de/Beispiele/tablaeng.html
 
Zuletzt bearbeitet:
Ja die Tabellen sind mit Leerzeichen getrennt.
Ja die neuen Zeilen, sollen immer am Ende eingefügt werden.

Im Grunde brauche ich doch eine Schleife oder?
Im Endeffekt werde ich ja mehr als eine Zeile hinzufügen. Dann muss ja beim zweiten Betätigen des Buttons in der ersten Tabelle auch schon eine neue Zeile eingefügt werden.
 
zeile = 1

//erste Leerzeile finden

Do While Cells(zeile, 1) <> vbNullstring
zeile = zeile+1
Loop

//Zeile einfügen...

Rows(zeile,1).Select
Selection.Insert Shift:=xlDown

//weitere Leerzeile finden...

Do While Cells(zeile, 1) <> vbNullstring
zeile = zeile+1
Loop

//Zeile einfügen...

Rows(zeile,1).Select
Selection.Insert Shift:=xlDown

//weitere Leerzeile finden...

Do While Cells(zeile, 1) <> vbNullstring
zeile = zeile+1
Loop

//Zeile einfügen...

Rows(zeile,1).Select
Selection.Insert Shift:=xlDown


so in etwa...

EDIT: Er startet immer in Spalte A Zeile1 und sucht eine leere Zelle.
Dort fügt er eine Zeile ein... dann sucht er nach der nächsten leeren Zelle... fügt ein... etc. das Ganze drei mal.
 
Zuletzt bearbeitet: (zur Erklärung)
Zurück
Oben