Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1604to1608
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

Spalte einfügen und Formel übernehmen

Spalte einfügen und Formel übernehmen
25.01.2018 22:05:13
Richard
Hallo,
ich gebe zu, ich wurstle mich ein wenig durch VBA durch, daher nehme ich an, dass es für mein Problem eine relativ einfache Lösung gibt, die ich nur nicht kenne.
Ich möchte in einer Tabelle eine Spalte einfügen. Das passt soweit auch.
Dim tbl_Stat As ListObject
Dim i As Integer
Set tbl_Stat = ActiveSheet.ListObjects(10)
i = tbl_Stat.ListColumns.Count
tbl_Stat.ListColumns.Add (i)
Es wird also vor der letzten Spalte eine neue Spalte eingefügt.
In der Spalte stehen aber in jeder Zelle Formeln. In meiner eingefügten Spalte leider nicht. Da die Formeln in der (jetzt) letzten Spalte vorhanden und angepasst sind, möchte ich sie einfach auf die vorletzte Spalte übernehmen.
Per Hand würde ich einfach die letzte Spalte markieren und "am Knubbel" eine Spalte nach links ziehen. Mit VBA komme ich aber zu keiner Lösung.
Es wäre toll, wenn mir jemand weiterhelfen könnte.
Vielen Dank,
Richard

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalte einfügen und Formel übernehmen
26.01.2018 10:19:47
Robert
Hallo Richard,
ich habe mal etwas rumprobiert. Folgendes Makro fügt vor der letzten Spalte der Tabelle eine neue Spalte ein und kopiert die Formeln der letzten Spalte in die neue vorletzte.
Sub SpalteEinfuegen()
Dim tbl_Stat As ListObject
Dim i As Integer
Set tbl_Stat = ActiveSheet.ListObjects(10)
i = tbl_Stat.ListColumns.Count
With tbl_Stat
.ListColumns.Add (i)
.ListColumns(4).Range.Offset(1, 0).Resize(.ListRows.Count, 1).Copy _
.ListColumns(4).Range.Offset(1, -1).Resize(.ListRows.Count, 1)
End With
End Sub

Es geht vielleicht auch einfacher, aber so scheint es zumindest mal zu funktionieren.
Gruß
Robert
Anzeige
kleine Korrektur
26.01.2018 10:47:13
Robert
Die Zeile mit dem Copy-Befehl muss wie folgt lauten:
.ListColumns(i + 1).Range.Offset(1, 0).Resize(.ListRows.Count, 1).Copy .ListColumns(i).Range.Offset(1, 0).Resize(.ListRows.Count, 1)
Ich hatte bei meinen Tests hier, eine feste Spalten-Nr. angegeben. Die sollte natürlich durch i, bzw. i+1 ersetzt werden.
Gruß
Robert
AW: kleine Korrektur
26.01.2018 11:01:39
Richard
Hallo Robert,
vielen Dank für die Antwort.
Leider erhalte ich nach dem Add einen Syntaxfehler bzw. Kompilierungsfehler (= erwartet)!?
Idee?
Vielen Dank,
Richard
AW: kleine Korrektur
26.01.2018 11:11:56
Robert
Hallo Richard,
bei mir hier klappt es einwandfrei.
Du meinst in nachstehender Zeile meckert Excel:
.ListColumns(i + 1).Range.Offset(1, 0).Resize(.ListRows.Count, 1).Copy _
.ListColumns(i).Range.Offset(1, 0).Resize(.ListRows.Count, 1)

Hast Du meinen Code hier im Forum kopiert und bei Dir eingefügt? Dann lösche mal daraus den Unterstrich (_) und die nachfolgenden Zeichen, bis der Code in einer Zeile steht. Klappt es dann?
Gruß
Robert
Anzeige
AW: kleine Korrektur
26.01.2018 11:20:50
Richard
Hallo Robert,
jetzt klappt es! Super! Vielen Dank!
Aber der _ ist doch eigentlich schon dazu da, dass man in der nächsten Zeile weiterschreiben kann, oder?
Gruß,
Richard
AW: kleine Korrektur
26.01.2018 12:08:04
Robert
Hallo Richard,
eigentlich schon. Ich hatte allerdings der besseren Lesbarkeit des Quellcodes wegen in der Folgezeile (nach dem _) einige Leerzeichen eingefügt. In VBA ist das kein Problem. Anscheinend ist dann aber durch das Einstellen in das Forum als HTML-Text und dem Kopieren und Einfügen irgend etwas rein geraten, womit VBA nicht zurecht kam. Egal - freut mich, dass es jetzt klappt.
Gruß
Robert
Anzeige

322 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige