Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1924to1928
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
VBA - Spalten löschen
28.03.2023 10:36:59
Christian

Hallo,

ich bin ziemlicher VBA Anfänger und versuche mich gerade an einem Makro, welches den Inhalt aller Spalten untereinander auflistet und die dann überflüssigen Spalten löscht. Die Auflistung klappt, aber das löschen nicht, da gibt's einen Fehler 400. Was mache ich falsch?

Ich nutze in dem Fall VBA, weil die PQ Alternative die bestehenden Hyperlinks entfernt.

Danke
Christian

Sub auflisten()
  Dim i As Integer
  Application.ScreenUpdating = False
  loLetzte = .Cells(1, Columns.Count).End(xlToLeft).Column
  For i = 2 To loLetzte
    Cells(1, i).Resize(loLetzte).Copy Cells(Rows.Count, 1).End(xlUp).Offset(1)
  Next i
  ActiveSheet.Columns("2:" & loLetzte).Delete
End Sub


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

Betreff
Datum
Anwender
Anzeige
AW: VBA - Spalten löschen
28.03.2023 10:47:02
Daniel
Hi
wenn man Zelladressen in Textform angibt, sind Zahlen immer Zeilen und für die Spalten muss man die Buchstaben verwenden.
Zahlen als Spaltenadresse geht nur als einzelne Zahl für eine einzelne Spalte. Für einen Bereich muss man dann mit Range arbeiten:
Range(Columns(2), Columns(loLetzte)).Delete
ich würde hier allerdings zahlenfrei arbeiten:
ActiveSheet.Usedrange.Offset(0, 1).EntireColumn.Delete
Gruß Daniel


AW: VBA - Spalten löschen
28.03.2023 11:30:37
Christian
Hallo Daniel.

sorry aber ich fürchte ich brauche doch mehr Hilfe, als ich zuerst dachte.

Ich bin jetzt nochmal zurück gegangen zu dem ursprünglichen makro, bei dem ich mich auf 300 Zeilen festgelegt hatte. Und habe deine Zeile eingefügt.

Sub aaa()
  Dim i As Integer
  Application.ScreenUpdating = False
  For i = 2 To 300
    Cells(1, i).Resize(300).Copy Cells(Rows.Count, 1).End(xlUp).Offset(1)
  Next i
  ActiveSheet.UsedRange.Offset(0, 1).EntireColumn.Delete
End Sub
Das funktioniert, legt sich aber auf 300 Spalten fest.

Habe es dann versucht zu ändern auf

Sub aaa()
  Dim i As Integer
  Application.ScreenUpdating = False
  With Worksheets("Update")
  loLetzte = .Cells(1, Columns.Count).End(xlToLeft).Column
  For i = 2 To loLetzte
    Cells(1, i).Resize(loLetzte).Copy Cells(Rows.Count, 1).End(xlUp).Offset(1)
  Next i
  ActiveSheet.UsedRange.Offset(0, 1).EntireColumn.Delete
  End With
End Sub
und wollte damit den Bereich B1:B289 unter den Bereich A1:A289 bringen, jedoch wurden gerade mal die Zellen B1 und B2 kopiert.
Jetzt bin ich wieder ratlos

Schaust du bitte nochmal?

Christian


Anzeige
AW: VBA - Spalten löschen
28.03.2023 16:43:13
GerdL
Hallo Christian,

loletzte misst die Spaltenanzahl, nicht die Länge der einzelnen Spalten.
Sub Unit()
  
  Dim i As Long
  Dim LS As Long
  
  Application.ScreenUpdating = False
  With Worksheets("Update")
    LS = .Cells(1, Columns.Count).End(xlToLeft).Column
    For i = 2 To LS
      .Cells(1, i).Resize(.Cells(.Rows.Count, i).End(xlUp).Row).Copy .Cells(.Rows.Count, 1).End(xlUp).Offset(1)
    Next i
    .Cells(1, 2).Resize(1, LS - 1).EntireColumn.Delete
  End With

End Sub
Gruß Gerd


AW: VBA - Spalten löschen
29.03.2023 08:11:09
Christian
Hallo Gerd,

vielen Dank, auch für die Erklärung. Funktioniert.

Christian

Anzeige

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige