Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1512to1516
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

Makro: Spalten einfügen

Makro: Spalten einfügen
13.09.2016 11:16:01
Jan
Moin zusammen,
als unerfahrener VBA-Anwender bräuchte ich bitte einmal Hilfe bei folgendem Anliegen:
Ich möchte mithilfe eines Makros eine definierte Zeile nach dem Wort "Menge" durchsuchen. Jedes Mal, wenn eine Zelle mit diesem Inhalt entdeckt wurde, soll die zugehörige Spalte selektiert und links davon eine neue Spalte eingefügt werden.
Da ich ein Fan des "Learning by Doing" bin, habe ich es anhand einer vereinfachten Dummy- _ Tabelle, des Makro-Recorders und ein wenig Recherche selbst schon einmal probiert. Bisher leider ohne Erfolg. Nachfolgend einmal mein Code:

Sub Spalten_kopieren()
Dim i As Integer
Dim cell As Range
i = 1
For Each cell In Tabelle1.Range("A1:J1")
If cell.Value = "1" Then
cell.EntireColumn.Select
' Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
End If
Next cell
End Sub

Es wird zumindest die letzte Spalte richtig markiert, allerdings auch nur diese. Wenn ich dann den mit dem Recorder aufgezeichneten Befehl zum Einfügen aktiviere, dann werden neue Spalten bis zu einem Laufzeitfehler eingefügt. Dementsprechend also noch nicht optimal ;)
Für ein bisschen Nachhilfe wäre ich Euch sehr dankbar!
Besten Gruß, Jan

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro: Spalten einfügen
13.09.2016 11:30:33
Matthias
Hallo Jan,
probiers mal so
Option Explicit
Sub Spalten_kopieren()
Dim i As Integer
Dim x&
i = 1
For x = 1 To 20 Step 2
If Cells(1, x).Value = "1" Then
Cells(1, x).EntireColumn.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
End If
Next x
End Sub
Gruß Matthias
AW: Makro: Spalten einfügen
13.09.2016 12:32:46
Jan
Hallo Matthias,
danke für Deine Antwort. Wenn ich den Code verwende, dann wird nur vor der allerersten Spalte eine Neue eingefügt. Ändere ich den "Value" von 1 auf 2, passiert überhaupt nichts...
Grüße, Jan
AW: Makro: Spalten einfügen
13.09.2016 18:59:30
Werner
Hallo Jan,
ich habe mir lange überlegt, ob ich dir überhaupt antworten soll. Warum? Weil du das gleiche Problem auch beim VBA-Forum eingestellt hast -Crossposting-.
Das ist nicht die feine englische Art. Dadurch beschäftigen sich in beiden Foren Leute mit deienm Problem, ohne voneinander zu wissen. Irgendwer arbeitet dann für die Tonne.
Trotzdem mal meine Antwort. Die Schleife muss von hinten nach vorne laufen, sonst werden sämtliche Leerspalten vor der Spalte mit dem ersten Treffer eingefügt.
Ich habe es jetzt mal so gelöst, dass im ersten Schleifendurchlauf die Leerspalten eingefügt werden und in einem zweiten Schleifendurchlauf die Formate kopiert werden.
Option Explicit
Sub Spalten_kopieren()
Dim i As Integer
Dim x&
i = 1
For x = Cells(1, Columns.Count).End(xlToLeft).Column To 1 Step -1
If Cells(1, x).Value = "Menge" Then
Cells(1, x).EntireColumn.Insert Shift:=xlToRight
End If
Next x
For x = Cells(1, Columns.Count).End(xlToLeft).Column To 1 Step -1
If Cells(1, x).Value = "Menge" Then
Cells(1, x).Copy
Cells(1, x - 1).PasteSpecial xlPasteFormats
End If
Next x
Application.CutCopyMode = False
End Sub
Für was die Variable i gut sein soll erschließt sich mir nicht. Die hattest du schon in deinem ersten Code drin, ohne sie zu benutzen.
Gruß Werner
Anzeige
Hast Recht, Werner ... rückwärts ...
14.09.2016 01:09:05
Matthias
Hallo,
Du hast Recht Werner. Schleife rückwärts starten.
Mach ich eigentlich selbst auch immer so.
Die Variable i hatte ich auch nur durch das Kopieren übernommen.
Aber das hast Du ja nun klargestellt.
Gruß Matthias
AW: Hast Recht, Werner ... rückwärts ...
14.09.2016 09:24:53
Jan
Hallo Werner,
bzgl. des Crosspostings: tut mir leid, darüber habe ich nicht nachgedacht. Wird nicht wieder vorkommen.
Vielen Dank aber, dass Du trotzdem geantwortet hast. Der Code läuft super und macht genau das, was ich mir vorgestellt habe. Vielen Dank dafür!
Grüße, Jan
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
14.09.2016 10:08:16
Werner
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
14.09.2016 10:46:11
Jan
Hallo,
hätte doch noch eine Frage: Mein ursprüngliches Anliegen war es ja, ein neue Spalte rechts neben der gefundenen Zelle einzufügen. Dies scheint nicht zu funktionieren, daher als Workaround die Idee, den Inhalt (Werte) der "alten" Spalte komplett in die neue Spalte zu übertragen und dann den Inhalt der alten Spalte zu löschen. Ist dies verständlich? Wie muss hierfür der Code angepasst werden?
Danke für Rückmeldung!
Grüße, Jan
Anzeige
AW: Rechts/Links Schwäche? ;-P
14.09.2016 13:54:48
Werner
Hallo Jan,
lies dir mal deinen Eingangsbeitrag durch.
Gruß Werner
AW: angepasst auf rechts
14.09.2016 15:23:34
Werner
Hallo Jan,
hab es mal auf rechts angepasst.
Option Explicit
Sub Spalten_kopieren()
Dim i As Integer
Dim x&
i = 1
For x = Cells(1, Columns.Count).End(xlToLeft).Column To 1 Step -1
If Cells(1, x).Value = "Menge" Then
Cells(1, x + 1).EntireColumn.Insert Shift:=xlToRight, CopyOrigin:= _
xlFormatFromLeftOrAbove
End If
Next x
End Sub
Gruß Werner

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige