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

Code funktioniert nur mit F8 richtig

Code funktioniert nur mit F8 richtig
16.10.2021 10:28:18
Sarah
Hallo zusammen,
ich bin mehr als ratlos und komm einfach nicht auf die Lösung.
Für das Verständnis, die Datei in der dieser Code läuft, ist eine Art Sammeldatei.
Der Schichtreport für eine Woche besteht aus, bis zu 3 Dateien (3Schichten) mit bis zu 6 Tabellenblättern(Montag bis Samstag) ,diese haben alle den selben Aufbau.
Auch meine Datei ist gleich aufgebaut, nur das ich alle 3 Schichten und (beschriebene) Wochentage in einem Tabellenblatt zusammenfassen möchte.
Mein Problem stellt sich folgendermaßen dar --> durch einen Button in meiner Mappe wird der Code ausgeführt und läuft auch durch, doch er kopiert mir teilweise weniger und lässt Zeilen aus und manchmal auch die Zeile A9:O doch diese brauch ich nicht. Ich will auch nicht das er mir leere Zeilen einfügt, macht er z.B. an einem Samstag wenn nichts in Zeile A10:O drin steht.
Wenn ich den Code jedoch mit F8 Stück für Stück durchgehe und mir jedes Tabellenblatt anschaue welchen Bereich er da kopiert, macht er genau das was er soll!
Und das ist für mich einfach nicht nachvollziehbar :(
Ich hoffe sehr das mir einer von euch helfen kann :)
MfG Sarah
Hier der Code:

Private Sub cmB_Datah_einfuegen_Click()
Call Mehrere_Dateien_auswählen
End Sub

Sub Mehrere_Dateien_auswählen()
Dim arrDateien As Variant
Dim wbQuelle As Workbook
Dim LetzteZeileZiel As Long
Dim cntDatei As Long
Dim sh As Worksheet
' Screenupdating und PopUps deaktivieren
Application.ScreenUpdating = False
Application.DisplayAlerts = False
' Benutzer Dateien auswählenlassen
ChDir "\\europe.(xxx)Schichtreport\Archiv\2021"
arrDateien = Application.GetOpenFilename(filefilter:="Excel-Dateien (*.xls*),*.xls*", MultiSelect:=True)
LetzteZeileZiel = ThisWorkbook.Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Row
' Wurde eine Datei ausgewählt?
If IsArray(arrDateien) Then
' Schleife über alle Dateien
For cntDatei = 1 To UBound(arrDateien)
'Aktuelle Arbeitsmappe öffnen
Set wbQuelle = Workbooks.Open(Filename:=arrDateien(cntDatei), UpdateLinks:=False, ReadOnly:=True)
' Schleife über alle Tabellenblätter
For Each sh In wbQuelle.Sheets
If sh.Name  "Daten" Then
' Daten kopieren und einfügen
sh.Range("A10:O" & Cells(Rows.Count, 1).End(xlUp).Row).Copy
ThisWorkbook.Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial
End If
Next sh
' Arbeitsmappe schließen
wbQuelle.Close SaveChanges:=False
Next cntDatei
End If
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code funktioniert nur mit F8 richtig
16.10.2021 10:44:26
Luschi
Hallo Sarah,
ein typischer Flüchtigkeitsfehler ist hier verborgen:
sh.Range("A10:O" & Cells(Rows.Count, 1).End(xlUp).Row).Copy
richtig: sh.Range("A10:O" & sh.Cells(sh.Rows.Count, 1).End(xlUp).Row).Copy
oder:
With sh
   .Range("A10:O" & .Cells(.Rows.Count, 1).End(xlUp).Row).Copy
End With
Gruß von Luschi
aus klein-Paris
AW: Code funktioniert nur mit F8 richtig
16.10.2021 11:42:10
Sarah
Hallo Luschi,
Danke schon mal für deine schnelle Antwort.
leider funktioniert es immer noch nicht :(
Ich nutze im Moment immer die selben Dateien (Früh und Spätschicht von KW39) aus der Frühschichtdatei werden alle Daten wie gewünscht kopiert und eingefügt, in der Spätschicht wird jedoch immer nur Zeile 9 und 10 von jedem Tabellenblatt (Mo-Sa) kopiert und eingefügt. Das leuchtet mir absolut nicht ein, da die Dateien den selben Aufbau der Tabelle haben nur mit andern Textinhalten.
MfG Sarah
Anzeige
AW: Code funktioniert nur mit F8 richtig
16.10.2021 12:08:42
ralf_b
1. Der code soll ab Zeile 10 und höher kopieren. Die letzte Zeile wird in Spalte A gesucht. Nun macht er das aber nicht immer. D.h. in Zeile10 Spalte A steht nichts drin und z.b. Zeile 9 ist dann die letzte belegte Zeile. Also ist der kopierte Bereich A10:O9
2. somit bekommts du auch eine leere Zeile (Zeile 10) mit rein, weil du ja den Bereich fest ab Zeile 10 beginnen läßt.
3. wenn du beim Debuggen des Codes die Tabellenblätter aktivierst und den Suchbereich für die letzte belegte Zeile nicht auf das richtige Blatt (sh) legst, kann das dann auch daneben gehen.
AW: Code funktioniert nur mit F8 richtig
16.10.2021 13:09:51
Sarah
zu 1. Ja das ist richtig. Er kopiert mir aber auch teilweise nur Zeile 9 und 10 selbst wenn in Zeile 10,11,12 usw. Textinhalte vorhanden sind.
und zu 3. wie kann ich den Code umschreiben das es nicht mehr daneben geht?
MfG Sarah
Anzeige
AW: Code funktioniert nur mit F8 richtig
16.10.2021 12:35:52
Werner
Hallo,
wenn der Kopierbereich ein zusammenhängender Bereich ist (ohne eine komplette Leerzeile oder eine komplette Leerspalte innerhalb des Bereichs), dann versuchs mal so:

sh.Range("A10").CurrentRegion.Copy
Gruß Werner
AW: Code funktioniert nur mit F8 richtig
16.10.2021 13:05:17
Sarah
Hallo Werner,
dies funktioniert leider nicht richtig, denn es werden auch die Zeilen darüber mit in meine Zieldatei kopiert :(
MfG Sarah
AW: Code funktioniert nur mit F8 richtig
16.10.2021 13:27:49
Werner
Hallo,
dann lade mal eine deiner Dateien mit den Daten, die kopiert werden sollen hier hoch, Daten halt ggf. anonymisieren.
Dann kann man auch deinen Tabellenaufbau sehen, alles andere ist doch nur gestochere im Nebel.
Gruß Werner
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige