Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1856to1860
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 anpassen

Makro anpassen
22.11.2021 12:55:00
Sebastian
Hi zusammen, ich habe netter Weise aus euer Community vor ner Weile Hilfe erhalten. Die Finale Lösung kam von @Thorsten :) Ich bräuchte an diesem Makro noch eine Änderung und zwar: Im selben Zuge, wenn die Spalten A14:F kopiert und eingefügt werden, müssten die Zeilen A11:F ebenfalls kopiert werden ABER in Tabellenblatt "Infos"
und da ab Spalte N1 eingefügt werden. Es müssen an dieser Stelle keine Altdaten gelöscht werden, da die neuen die alten hier überschreiben.
P.s -> Wenn man das Öffenen der Quell-Datei noch so optieren könnte das er beim Dateiauswahl-Dialog in dem Ordner startet wo die Ziel-Datei liegt, wäre das ein MEGA BONUS :)
Ich Danke euch schon mal im Voraus

Sub kopieren()
Dim lQuelle As Variant
lQuelle = Application.GetOpenFilename("Microsoft Excel-Dateien (*.xls*), *.xls*", , "Wählen Sie die Quell-Datei aus") 'per Dateiauswahl-Dialog wirst du aufgefordert, deine Quell-Datei zu öffnen
If lQuelle = False Then Exit Sub 'wenn du im Dialog auf Abbrechen klickst, wird dieses Makro hier beendet
With Tabelle1
'wenn in Zieldatei in Tabelle1 ab Zeile 19 (alte) Datenzeilen enthalten sind...
If .Cells(.Rows.Count, 2).End(xlUp).Row >= 19 Then
'...werden die Inhalte der (alten) Datenzeilen erst mal gelöscht
.Range("B19:GN" & .Cells(.Rows.Count, 2).End(xlUp).Row).ClearContents
End If
Workbooks.Open Filename:=lQuelle 'dieser Befehl öffnet die von dir im Dialog zuvor ausgewählte Quelldatei
Range("A14:F" & Cells(Rows.Count, 2).End(xlUp).Row).Copy .Range("B19") 'alle Datenzeilen aus Quelldatei in den Spalten A:F ab Zeile 14 bis zur zuletzt genutzten Zeile in den Spalten A:F werden kopiert und in Zieldatei in den Spalten B:G ab Zeile 19 eingefügt
ActiveWorkbook.Close False 'die Quelldatei wird - ohne sie zu speichern! - wieder geschlossen
End With
'nun siehst du alle in Quelldatei kopierten Zeilen, die in Zieldatei eingefügt wurden - die Zieldatei wird nicht geschlossen
End Sub

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro anpassen
22.11.2021 12:59:29
UweD
Hallo
ungetestet...

Range("A14:F" & Cells(Rows.Count, 2).End(xlUp).Row).Copy .Range("B19")
Range("A11:F" & Cells(Rows.Count, 2).End(xlUp).Row).Copy Sheets("Info").Range("N1")
LG UweD
AW: Makro anpassen
22.11.2021 13:06:22
Sebastian
Hi UweD, Danke dir erst mal. Er sagt mir leider " Laufzeitfehler 9" Index außerhalb des gültigen Bereichs :(
AW: Makro anpassen
22.11.2021 14:06:51
UweD
Hallo
dann gibt es das Blatt "Info" nicht;
oder es ist in der anderen Datei.
Zeige mal, welche Tabellenblätter in den beiden Dateien enthalten sind, und in welches Blatt, welcher Tabelle was eingefügt werden soll.
Zur Info: Ist kein Blattname angegeben, wird die aktuelle Datei und das aktuelle Blatt verwendet.
LG UweD
Anzeige
AW: Makro anpassen
22.11.2021 14:28:28
Sebastian
Hi UweD, ja das stimmt es gab "Info" nicht sondern "Infos" aber das hatte ich sofort entdeckt und geändert. Trotzdem die Fehlermeldung. Arbeitsmappe hochladen, geht gerade nicht wegen Firmen PC :(
AW: Makro anpassen
23.11.2021 08:21:42
Sebastian
Hat evtl. noch jemand eine Idee woran es liegen könnte ? Oder wie man das Problem lösen kann ? :)
AW: Makro anpassen
23.11.2021 08:51:25
UweD
  • Zeige mal, welche Tabellenblätter in den beiden Dateien enthalten sind, und in welches Blatt, welcher Tabelle was eingefügt werden soll.

  • AW: Makro anpassen
    23.11.2021 09:05:28
    Sebastian
    Guten Morgen, die Datei ist zu Groß für den Upload :( 300KB darf ich hier nur hochladen.
    AW: Makro anpassen
    23.11.2021 09:13:31
    Sebastian
    Ich hab es mal als Screenshot hochgeladen. Eventuell hilft das ja :)
    
    Userbild
    
    
    Userbild
    

    Anzeige
    AW: Makro anpassen
    23.11.2021 13:07:40
    Sebastian
    Hi Uwe, selbst wenn ich es so ab ändere ->
    
    Range("B1:F11" & Cells(Rows.Count, 2).End(xlUp).Row).Copy .Range("DU1")
    
    Also das er es im selben Arbeitsblatt macht, klappt es so nicht. Er kopiert mir dann ALLES nach DU1, also nicht nur den Bereich A1:F11 ?
    
    Workbooks.Open Filename:=lQuelle 'dieser Befehl öffnet die von dir im Dialog zuvor ausgewählte Quelldatei
    Range("A14:F" & Cells(Rows.Count, 2).End(xlUp).Row).Copy .Range("B19") 'alle Datenzeilen aus Quelldatei in den Spalten A:F ab Zeile 14 bis zur zuletzt genutzten Zeile in den Spalten A:F werden kopiert und in Zieldatei in den Spalten B:G ab Zeile 19 eingefügt
    Range("B1:F11" & Cells(Rows.Count, 2).End(xlUp).Row).Copy .Range("DU1")
    ActiveWorkbook.Close False 'die Quelldatei wird - ohne sie zu speichern! - wieder geschlossen
    
    Kann er keine 2 Copy & Paste Vorgänge gleichzeitig durchführen ?
    Anzeige
    AW: Makro anpassen
    23.11.2021 13:41:17
    Yal
    Hallo Sebastian,
    noch einmal muss man Dir die Ohren lang ziehen: einen Code zu übernehmen, ohne selber versuchen zu verstehen, kann nur schief gehen.
    Wenn nicht heute, dann morgen, wenn der nette Helfer nicht mehr da ist.
    Wie ist ein Bereich definiert?
    Range("A1:F11")
    was steht drin?
    eine erste Zelle A1 und eine zweite Zelle F11.
    Was liefert einen
    Cells(Rows.Count, 2).End(xlUp).Row
    Die Nummer einer Zeile, also ein Zahl.
    Wie fügt sich diese Zahl in folgendem Ausdruck?
    Range("B1:F11" & Cells(Rows.Count, 2).End(xlUp).Row).Copy .Range("DU1")
    Als?
    Als String-Zusatz zu F11.
    Da Du mindestens 11 Zeilen hast, hast Du mindestens eine 2-stelige Zahl, also deine zweite Zelle ist nicht mehr F11
    sondern mindestens F1111.
    Dementsprechend, was muss man korrigieren?
    Genau den 11 am Ende von F11 muss weg.
    Es ist aberwitzig, dass eine Zeile davor richtig steht "A14:F" & ... Du aber nicht in der Lage bist, diese beide Zeilen miteinander zu vergleichen.
    Und genau darum gehört es Dir die Ohren langgezogen: Du machst deine Hausaufgabe (Code lesen und verstehen wollen) nicht, und komme dementsprechend nicht voran (hört sich hart, ist aber nur gut gemeint).
    VG
    Yal
    Anzeige
    AW: Makro anpassen
    23.11.2021 13:55:11
    Sebastian
    Hi Yal, ich habe ja gar kein Problem mich belehren zu lassen ;)
    Und genau was du unten schreibst habe ich probiert. Der Fehler ist das ich bei der ersten Zeile ...
    
    Range("A14:F" & Cells(Rows.Count, 2).End(xlUp).Row).Copy .Range("B19")
    
    ... wollte das er von A14 bis F alles kopiert bis er die erste leere Zeile findet.
    Bei der zweiten Zeile möchte ich ja das er einen festen Bereich kopiert B1 bis F11. Das habe ich nicht angepasst. Aber wie genau ich es ab ändern muss weiss ich auch nicht ... trotzdem Danke
    AW: Makro anpassen
    23.11.2021 14:02:30
    Sebastian
    Ich habs :) Dankeschön :)
    Anzeige
    AW: Makro anpassen
    23.11.2021 14:36:00
    Yal
    Hallo Sebastian,
    Mit der richtigen Erklärung verstehe ich es besser. Ich habe die Komplexität des Vorhabens unterschätzt.
    Unklar ist:
    erste leere Zelle von A14 kommend oder von unten kommend?
    von Unten: Range("A14:F" & Cells(Rows.Count, 2).End(xlUp).Row)
    von A14: Range("A14:F" & Range("A14").End(xlDown).Row)
    Fast gleich aber doch anders:
    Range(Range("A14"), Range("F14").End(xlDown))
    Im ersten wird die letzte Zeile vor der ersten leeren Zelle in Spalte A und daraus eine "Fx"-Adresse gebaut
    Bei der zweiten ab Zelle F14. Und da hängt es davon ob F14 befüllt ist oder nicht.
    B1:F11 hast Du ja schon:
    Range("B1:F11").Copy .Range("DU1")
    VG
    Yal
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige