Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Leere Zeilen löschen
07.07.2019 13:15:24
walta
Hallo zusammen,
beim nachfolgenden Code habe ich einige Probleme die ich selbst nicht lösen kann.
- es werden alle Zellen ab A1:Z2000 kopiert ich brauche aber A2:ZZ2000, meine erste Zeile soll stehen bleiben
-alle Zeilen in denen nichts steht sollen gelöscht werden und die Daten damit alle direkt untereinander stehen
-die Daten sollen sortiert werden "Z bis A" also vom Größten zum kleinsten, das nach Spalte H (hier stehen die relevanten Werte nach denen sortiert werden muss)
Ich weiß, dass ich hier viel verlange, jedoch sitze ich schon eine Woche daran und komme leider nicht weiter.
Daher danke ich jedem, der mir hier weiterhelfen kann.
Option Explicit
Public Sub OpenFiles()
Const FILE_PATH As String = "C:\Users\WBICHOU\Desktop\projekt\"
Dim MyFile As String
Dim objWorkbook As Workbook
Dim lngRow As Long
Application.ScreenUpdating = False
Call ThisWorkbook.Worksheets("Sheet1").Cells.ClearContents
lngRow = 1
MyFile = Dir$(FILE_PATH & "*.xlsx")
Do Until MyFile = ""
If MyFile  ThisWorkbook.Name Then
Set objWorkbook = Workbooks.Open(Filename:=FILE_PATH & MyFile, UpdateLinks:=3)
Call objWorkbook.Worksheets("Sheet1").Range("A2:ZZ2001").Copy( _
Destination:=ThisWorkbook.Worksheets("Sheet1").Cells(lngRow, 1))
lngRow = lngRow + 2000
Call objWorkbook.Close(SaveChanges:=True)
End If
MyFile = Dir$
Loop
With ThisWorkbook.Worksheets("Sheet1")
.Range(.Cells(.Rows.Count, 1).End(xlUp). _
Offset(1, 0), .Cells(.Rows.Count, 1)).EntireRow.Hidden = True
.Range(.Cells(1, .Columns.Count).End(xlToLeft). _
Offset(0, 1), .Cells(1, .Columns.Count)).EntireColumn.Hidden = True
End With
Application.ScreenUpdating = True
End Sub

Beste Grüße

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Leere Zeilen löschen
07.07.2019 13:23:53
Daniel
Hi
1. lngRow = 2
2. am schluss einfach die komplette Tabelle nach Spalte H sortieren.
damit sollten dann auch die Leerzeilen zwischendrin verschwinden:
With ThisWorkbook.Sheets(1).Range("A:ZZ")
.Sort Key1:=.Cells(1, 8), order1:=xldescending, header:=xlyes
End with 
Gruß Daniel
AW: Leere Zeilen löschen
07.07.2019 13:28:59
walta
Hey Daniel,
danke für deine Antwort.
Könntest du mir dies einfach in meinen Code einfügen, bin noch recht neu in der Thematik.
Vielen Dank
AW: Leere Zeilen löschen
07.07.2019 13:33:55
Daniel
warum?
den ursprünglichen Code hast du doch auch irgendwie geschrieben.
was der Code macht, solltest du sowieso verstehen.
und eine 1 durch eine 2 zu ersetzen, erfordert jetzt wirklich keine VBA-Fähigkeiten.
das liegt dann an was anderem.
Gruß Daniel
Anzeige
AW: Leere Zeilen löschen
07.07.2019 14:36:14
walta
richtig, jedoch werden nun alle Spalten ausgeblendet, wenn ich den Code ausführe
AW: Leere Zeilen löschen
07.07.2019 14:49:13
Daniel
Hi
naja, wenn du im Code schreibst, dass alle Spalten ausgeblendet werden sollen, dann passiert das auch.
wenn nichts ausgeblendet werden soll, musst du die Zeilen, die das machen, löschen.
da VBA auf dem englischen basiert, sollte es nicht so schwer sein, diese Zeilen zu finden und zu löschen.
Aber ich bin ja nicht so: ausgeblendet wird mit .Hidden = True
Gruß Daniel
AW: Leere Zeilen löschen
07.07.2019 15:02:51
walta
danke, dass Problem habe ich mittlerweile gelöst,
jedoch ist mir aufgefallen, dass in der Hauptdatei die erste Zeile nicht beibehalten wird.
Also Zeile 1 in der Hauptdatei wird immer gelöscht/überschrieben, hast du dafür eine Lösung?
Anzeige
AW: Leere Zeilen löschen
07.07.2019 15:27:11
Daniel
Hast du meine erste Antwort gelesen?
Last ist die Variable, die festlegt, wo der nächste kopierte Block eingefügt wird.
Die musst du auf den passenden Startwert setzen.
AW: Leere Zeilen löschen
07.07.2019 15:31:06
walta
habe ich und habe den Code auch angepasst, jedoch wird die erste Zeile in der Hauptdatei trotzdem gelöscht
AW: Leere Zeilen löschen
07.07.2019 15:48:30
Daniel
gelöscht oder überschrieben?
wie sieht dein Code jetzt aus?
AW: Leere Zeilen löschen
07.07.2019 15:51:59
walta
Die erste Zeile ist einfach leer nachdem ich den nachfolgenden Code ausführe:
Option Explicit
Public Sub OpenFiles()
Const FILE_PATH As String = "C:\Users\YYY\projekt\"
Dim MyFile As String
Dim objWorkbook As Workbook
Dim lngRow As Long
Application.ScreenUpdating = False
Call ThisWorkbook.Worksheets("Sheet1").Cells.ClearContents
lngRow = 2
MyFile = Dir$(FILE_PATH & "*.xlsx")
Do Until MyFile = ""
If MyFile  ThisWorkbook.Name Then
Set objWorkbook = Workbooks.Open(Filename:=FILE_PATH & MyFile, UpdateLinks:=3)
Call objWorkbook.Worksheets("Sheet1").Range("A2:ZZ2001").Copy( _
Destination:=ThisWorkbook.Worksheets("Sheet1").Cells(lngRow, 1))
lngRow = lngRow + 2000
Call objWorkbook.Close(SaveChanges:=True)
End If
MyFile = Dir$
Loop
With ThisWorkbook.Worksheets("Sheet1")
.Range(.Cells(.Rows.Count, 1).End(xlUp). _
Offset(1, 0), .Cells(.Rows.Count, 1)).EntireRow.Hidden = False
.Range(.Cells(1, .Columns.Count).End(xlToLeft). _
Offset(0, 1), .Cells(1, .Columns.Count)).EntireColumn.Hidden = False
With ThisWorkbook.Sheets(1).Range("A:ZZ")
.Sort Key1:=.Cells(1, 8), order1:=xlDescending, Header:=xlYes
End With
End With
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Leere Zeilen löschen
07.07.2019 16:16:35
Daniel
naja, wenn du am Anfang programmierst, dass alle Zellen gelöscht werden sollen, dann darfst du dich nicht wundern, dass das auch passiert:
Call ThisWorkbook.Worksheets("Sheet1").Cells.ClearContents
das löscht einfach alle Zellen in dem tabellen blatt. ist doch irgendwie logisch.
wenn du alle Zellen, außer der ersten Zeile löschen willst, dann
ThisWorkbook.Worksheets("Sheet1").Usedrange.Offest(1,0).ClearContents
Gruß Daniel

330 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige