Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1916to1920
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

Kopieren von Daten in variable Tabs

Kopieren von Daten in variable Tabs
25.01.2023 15:56:52
Daten
Hallo zusammen,
ich habe eine Excel-Datei, welche aus einem Input-Sheet und mehreren Ziel-Sheets (in meiner beigefügten Beispiel Datei: "Projekt A", "Projekt B", "Projekt C" und "Projekt D") besteht. Nun möchte ich ein Makro schreiben, welche den Inhalt des Input-Sheets in die einzelnen Ziel-Sheets kopiert.
Hier ist der Link zur vereinfachten Datei zum besseren Verständnis: https://www.herber.de/bbs/user/157465.xlsm
Der Inhalt der Tabelle des Input-Sheets wird regelmäßig aktualisiert und nicht jedes Mal sind neue Informationen für alle Projekte enthalten (z.B. wenn diese abgeschlossen sind), des Weiteren kommen mit der Zeit weitere Projekte hinzu (deren Tabs sind beim Auslösen des Makros bereits erstellt). Deshalb vermute ich, dass ich für das Ziel-Sheet eine Variable etablieren muss.
Mein Ansatz ist, dass ich einen Loop laufen lasse über die Zeilen des Input-Sheets.

Option Explicit
Sub ProjektdatenVerteilen()
Sheets("Input").Activate
Dim LastRow As Long, FirstRow As Long
Dim Row As Long 
With ActiveSheet
  FirstRow = 5
  LastRow = 50
                        
     For Row = FirstRow To LastRow Step 1
               If Range("A" & Row).Value > "" Then
               Range("B" & Row).Copy
               Sheets(?).Range("B1").PasteSpecial Paste:=xlPasteValues
               Range("C" & Row).Copy
               Sheets(?).Range("C1").PasteSpecial Paste:=xlPasteValues
     End If
End with
Mein Gedanke war, dass ich innerhalb des Loops am Anfang eine Variable definiere, aber da weiß ich nicht genau, wie das funktioniert. Ich habe dies so versucht, aber das ist wohl nicht richtig.

Dim Zielsheet As Range
Zielsheet = Range("A" & Row).Value
Und dass dann der "Einfügen" Befehl entsprechend so aussieht:

Sheets(Zielsheet).Range("B1").PasteSpecial Paste:=xlPasteValues
Wenn mir jemand hier helfen kann, wäre ich sehr dankbar!
Das zweite Problem wäre dann, dass die Daten nicht wie oben beschrieben in B1 und C1 der Ziel-Sheets kopiert werden sollen, sondern an die jeweilige Stelle des entsprechenden Datums (Monatsende). Hier müsste die Variable "Monatsende" wahrscheinlich vor dem Loop definiert werden, da sie für alle Daten im Input-Sheet gleich ist und die Variable "Zielzeile" dann wieder innerhalb des Loops, da die Zielzeile in jedem Ziel-Sheet unterschiedlich ist.
Leider hat mein Ansatz hier auch nicht funktioniert.

'Vor dem Loop die Definition von "Monatsende"
Dim Monatsende As Date
Monatsende = Sheets("Input").Range("E2")
'Innerhalb des Loop dann die Definition von "Zielzeile"
Dim Zielzeile As Range
Zielzeile = Columns(1).Find(what:=Monatsende)
'Und dann das Einfügen wie folgt
Sheets(?).Range("B" & Zielzeile.Row).PasteSpecial Paste:=xlPasteValues
Mir ist bewusst, dass das wahrscheinlich alles ziemlich wild aussieht. Ich bin noch recht neu in der VBA Welt und habe mir den bisherigen Stand aus verschiedenen Google-Suchen zusammengebastelt.
Über jede Hilfe oder jeden Tipp bin ich sehr dankbar!!
Viele Grüße
Rapha

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopieren von Daten in variable Tabs
25.01.2023 16:34:09
Daten
Hi,
ich habe Deinen Code mal etwas überarbeitet:
Wenn Du mit With arbeitest, müssen alle Objekte, Methoden und Ereignisse, die sich auf das Objekt hinter With beziehen, mit einem "." vorweg notiert werden.
Außerdem fehlte dem For ein Next
Zielblatt muss als String deklariert werden.
Teste mal, ob das so passt:
Sub ProjektdatenVerteilen()
Dim LastRow As Long, FirstRow As Long
Dim Row As Long
Dim Zielsheet As String
Dim dat_monatsende As Date
Dim rng_finden As Range
With Sheets("Input")
    FirstRow = 5
    LastRow = 50
    dat_monatsende = .Range("E2")
    For Row = FirstRow To LastRow Step 1
    
        If .Range("A" & Row).Value > "" Then
            Zielsheet = .Range("A" & Row).Value
            ' richtige Zeile finden
            Set rng_finden = Sheets(Zielsheet).Columns(1).Find(dat_monatsende, lookat:=xlWhole, LookIn:=xlValues)
            If Not rng_finden Is Nothing Then
                       
                .Range("B" & Row).Copy
                Sheets(Zielsheet).Cells(rng_finden.Row, 2).PasteSpecial Paste:=xlPasteValues
                .Range("C" & Row).Copy
                Sheets(Zielsheet).Cells(rng_finden.Row, 3).PasteSpecial Paste:=xlPasteValues
                Application.CutCopyMode = False
            End If
        End If
    Next
End With
End Sub
Gruß Regina
Anzeige
AW: Kopieren von Daten in variable Tabs
25.01.2023 18:21:50
Daten
Liebe Regina,
dein Code funktioniert einwandfrei! Ich bin super happy, vielen lieben Dank!! Ich musste noch einmal ein paar Anpassungen machen, da ich das Beispiel vereinfacht hatte, aber die haben auch wunderbar gepasst.
Also noch einmal vielen Dank für die schnelle Hilfe sowie die allgemeinen Hinweise!
Viele Grüße
Rapha
AW: Kopieren von Daten in variable Tabs
25.01.2023 18:08:07
Daten
Verzichte auf 'Splitten' von Daten in separate Sheets, Workbooks oder Folders.
Das alles gehört in nur einem Arbeitsblatt und dynamische Tabelle.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige