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

letzte Spalte irritiert

letzte Spalte irritiert
01.10.2019 11:48:20
Nadja
Hallo Zusammen,
ich hab ein Problem und benötige (dringend) Hilfe. Ich würde mich freuen, wenn mir jemand helfen könnte.
Ich habe mehrere Tabellen.
Per Makro kopiere ich immer bestimmte Zellen aus jeder Tabelle und füge sie in die letzte Tabelle "BSP" ab Spalte B nebeneinander ein
Ich habe hier im Forum ein Makro gefunden und für mich „optimiert“

Sub Einfügen ()
Dim x&
For x = 1 To Worksheets.Count
With Worksheets(x)
.Range("B2:B24").Copy Destination:=Sheets("BSP").Cells(2, x + 1)
End With
Next
Dim y&
For y = 1 To Worksheets.Count
With Worksheets(y)
.Range("C2:C24").Copy Destination:=Sheets("BSP ").Cells(27, y + 1)
End With
Next
Dim z&
For z = 1 To Worksheets.Count
With Worksheets(z)
.Range("D2:D24").Copy Destination:=Sheets("BSP ").Cells(52, z + 1)
End With
Next
End Sub

Das funktioniert alles, jedoch macht mir die letzte Spalte Probleme. Ich weiß nicht woher die Werte kommen. Die Werte der vorletzten Spalte sind immer die Werte aus der letzten Tabelle.
Ich hatte die Idee per Makro immer die letzte Spalte mit Inhalt zu löschen.
Habe hier auch ein Code dafür gefunden:

Sub letzte_Spalte()
Columns(ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column).Delete
End Sub

Damit wird aber immer die vorletzte Spalte gelöscht (die Spalte mit den Werten der letzten Tabelle und nicht die Spalte wo ich nicht weiß woher die Werte kommen)
Ich hoffe ich habe mein Problem ausführlich erklärt und mir kann jemand helfen.
Beispielmappe ist diesmal auch dabei 
Danke im Voraus
https://www.herber.de/bbs/user/132307.xlsx
Viele Grüße,
Nadja

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: letzte Spalte irritiert
01.10.2019 12:04:23
UweD
Hallo
Das letzte Blatt "BSP" wird ja auch durchlaufen und kopiert.
Ausserdem reicht eine Schleife als Durchlauf.
so?
Sub Einfügen()
    Dim x&, ZTB As Worksheet
        Set ZTB = Sheets("BSP")
        
        For x = 1 To Worksheets.Count
           With Worksheets(x)
               If .Name <> ZTB.Name Then
                   .Range("B2:B24").Copy Destination:=ZTB.Cells(2, x + 1)
                   .Range("C2:C24").Copy Destination:=ZTB.Cells(27, x + 1)
                   .Range("D2:D24").Copy Destination:=ZTB.Cells(52, x + 1)
               End If
           End With
        Next
End Sub

LG UweD
Anzeige
AW: letzte Spalte irritiert
01.10.2019 12:04:41
Daniel
Hi
wenn du die letzte benutze Spalte löschen willst, nimm einfach
ActiveSheet.Cells.SpecialCells(xlcelltypelastcell).EntireColumn.Delete
allerdigs werden bei der Ermittlung des benutzen Zellbereichs nicht nur Zellinhalte (Festwerte, Formeln) berücksichtigt, sondern auch Formatierungen.
wenn du die letzte benutzte Spalte mit Inhalt löschen willst, ermittelst du diese am besten so, verwende eine Zeile, die auf jeden Fall Daten enthält (z.B. die Überschriftenzeile)
Cells(2, Columns.Count).end(xltoleft).Entirecolumn.Delete
Gruß Daniel
Anzeige
AW: letzte Spalte irritiert
01.10.2019 12:05:24
peterk
Hallo
Da Du alle Worksheets durchläufst kopiert er am Schluss die Splate B aus "BSP" in die letzte Spalte in "BSP". Du musst ein zusätzliche Abfrage einbauen. z.b.

For x = 1 To Worksheets.Count
With Worksheets(x)
if .name  "BSP" then
.Range("B2:B24").Copy Destination:=Sheets("BSP").Cells(2, x + 1)
end if
End With
Next

oder einfach, wenn BSP immer am ende
01.10.2019 12:48:52
Daniel
steht, die Schleife nur bis zum vorletzten Blatt laufen lassen:

For x = 1 To Worksheets.Count - 1
bzw, wenn BSP am Anfang steht, die Schleife erst bei 2 beginnen lassen:

For x = 2 To Worksheets.Count
nur wenn die Postition von BSP nicht klar ist und das Blatt auch mal in der Mitte stehen kann, braucht man die Prüfung.
Um dann die Lücke in der Zusammenstellung zu vermeiden, muss man die Spaltennummer als seperaten Zähler mitführen.
For x = 1 to Worksheet.Count
if Worksheets(x).Name  "BSP" then
y = y + 1
Worksheets(x).Range("B2:B24").Copy Destination:=Sheets("BSP").Cells(2, y + 1)
end if
next
Gruß Daniel
Anzeige
AW: oder einfach, wenn BSP immer am ende
02.10.2019 10:21:35
Nadja
Vielen vielen Dank für eure Hilfe! funktioniert jetzt einwandfrei + hab durch die Erklärungen wieder dazu gelernt. Merci :)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige