Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1392to1396
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
Inhaltsverzeichnis

VBA Zeile in drei Tabellenblättern ändern

VBA Zeile in drei Tabellenblättern ändern
18.11.2014 11:06:25
Nik
Guten Tag,
ich habe folgendes Problem:
Ich habe drei Tabellenblätter, die miteinander verknüpft sind. Es gibt ein Eingabe-Blatt, in dem der Nutzer entscheiden kann wie viele Zeilen er benötigt, um alle seine Inhalte aufzunehmen.
Die anderen beiden Tabellen sind abhängig von der Eingabe-Tabelle. Ich habe unten ein Makro (auch aus dem Internet), welches schonmal in die Richtung geht.
1. Es wird nicht wie erwünscht unter "Fassade" eine Zeile eingefügt, sondern darüber.
2. Wenn ich versuche in den nächsten Reiter zu springen, passiert nicht. Z.B. hier in den Reiter Übersicht.
WICHTIG: Formeln und Formatierungen müssen auch komplett übernommen werden.

Sub NeueZeile()
Columns("B:B").Select
Selection.Find(What:="Fassade", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
ActiveCell.Offset(0, 0).Select
Selection.Offset(-1).EntireRow.Copy
Selection.EntireRow.Insert
Application.CutCopyMode = False
ActiveCell = x
End
Worksheets("Übersicht").Select
Columns("B:B").Select
Selection.Find(What:="Fassade", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
ActiveCell.Offset(0, 0).Select
Selection.Offset(-1).EntireRow.Copy
Selection.EntireRow.Insert
Application.CutCopyMode = False
ActiveCell = x
End Sub

Wäre schön, wenn mir einer helfen könnte. Ich kenne mich leider selber nicht mit VBA aus, sondern helfe mir selber sehr mit Foren im Internet!
Danke und lieben Gruß!

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Zeile in drei Tabellenblättern ändern
18.11.2014 11:13:55
Nik
Ich habe mich vllt nicht richtig ausgedrückt. Es geht in erster Linie darum, im Eigabe-Blatt, an einer bestimmten Stelle (unter dem Wort "Fassade") eine Zeile einzufügen. AN gleicher Stelle soll nun, auch unter dem Wort "Fassade", in den anderen beiden Blättern eine Zeile eingefügt werden.Die Zeile dessen Formatierung übernommen werden soll ist auch unter "Fassade". "Fassade" ist sozusagen nur die Überschrift, und die Zeilen darunter sind die interessanten, die alle Formatierungen enthalten.

Aktivieren von Tabellenblättern
19.11.2014 11:37:32
Tabellenblättern
Hallo Nik,
ohne hier den ganzen Code umzustellen, weil die diversen SELECT nicht unbedingt gebraucht werden, zumindest ein Tipp, warum das Worksheet "Übersicht" nicht ausgewählt wird: Es müsste hier korrekt heissen Worksheets("Übersicht").Activate. Allerdings ist auch dieses ACTIVATE so nicht notwendig und könnte anders gelöst werden.
Vielleicht willst Du ja doch mal tiefer in VBA einsteigen. Das hier Columns("B:B").Select für das Blatt "Übersicht" könnte man auch so ausdrücken Sheets("Übersicht").Columns("B:B").Select. Dazu bräuchte man das das Blatt nicht zu aktivieren.
Hat man z.B. 3 Blätter in einer Mappe und will in allen dreien in den gleichen Zellen das gleiche machen, ginge das u.a. auch so:
for i=1 to 3
with Sheets(i)
.cells(Zeile, Spalte).value = Berechnung1 'Code für Berechnung in Sub oder Function
.cells(Zeile, Spalte).EntireRow.Copy
.cells(Zeile + 1, Spalte).EntireRow.Insert
End with
next
Grüsse,
Frank

Anzeige
AW: Aktivieren von Tabellenblättern
19.11.2014 15:36:58
Tabellenblättern
Hallo Frank,
vielen Dank für deine Hilfe. Ich habe den Code nun folgendermaßen:

Sub NeueZeile()
For i = 1 To 3
With Worksheets(i)
Selection.Find(What:="Fassade", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
ActiveCell.Offset(0, 0).Select
Selection.Offset(-1).EntireRow.Copy
Selection.EntireRow.Insert
Application.CutCopyMode = False
ActiveCell = x
End With
Next
End Sub
Ich habe nun das Problem, dass er nicht wie erwünscht, in drei verschiedenen Tabellen eine Zeile kopiert und einfügt, sondern in der ersten, drei Zeilen kopiert und einfügt. Daher schaffe ich es noch nicht, in drei verschiedenen Tabellen den Befehl auszuführen.
Leider schaffe ich es nicht mich soweit durch zu schummeln um das erwünschte Ergebnis zu bekommen :(
Danke für Deine Hilfe!!
Nik

Anzeige
WITH verwenden
19.11.2014 18:09:56
Frank
Hallo Nik,
nein, das kann so auch nicht klappen.
Versuch's mal so
Sub test()
For i = 1 To 3
Sheets(i).Activate
Cells.Find(What:="Fassade", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
With Selection
.Offset(1).EntireRow.Copy
.Offset(1).EntireRow.Insert
End With
Application.CutCopyMode = False
Next
End Sub

und schau Dir den Code an. Dann versuche zu verstehen, was jede Zeile bewirkt.
Nicht ganz unwichtig bei der WITH-Konstruktion ist der Punkt am Anfang jeder Zeile.
Die Offsets zur aktiven Zelle sind in Deinem Code auch falsch gewählt, daher wird sowohl die falsche Zeile kopiert, als auch in der falschen Zeile eingefügt.
Grüsse,
Frank
Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige