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

VBA Werte in bestimmte Zeile kopieren

VBA Werte in bestimmte Zeile kopieren
16.06.2022 09:39:55
Gerhard
Ein herzliches Hallo zusammen!
Ich habe hier schon einige wertvolle Tips gefunden. Es ist ja so, dass einige/viele das gleiche Problem lösen möchten.
Trotz intensiver Suche habe für meine aktuelle Frage noch keine Antwort gefunden. Ich habe viel gesucht und gefunden, schaffe es aber nicht, die Beispiele auf meine Frage zu adaptieren.
Ausgangslage:
Ich habe eine Excel-Datei mit mehreren Tabellenblättern. Im Tabellenblatt REPORT steht in der Zelle C5 ein (beliebiges) Datum. In der gleichen Zeile stehen im Bereich D5 bis X5 Daten. Im Bereich C9 bis C373 steht das fortlaufende Datum, beginnend mit dem 01.01.2022 bis zum Jahresende.
Gewünschte Lösung:
Ich möchte nun in jene Zeile die Daten aus Zeile 5 kopieren, in der das Datum aus Spalte C9:C373 mit dem Datum von C5 übereinstimmt.
Angenommen, das Datum findet sich in C200, dann sollte D5:X5 nach D220:X220 kopiert werden.
Vielen Dank für eure Unterstützung.
LG Gerhard

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Werte in bestimmte Zeile kopieren
16.06.2022 09:53:06
Oberschlumpf
Hi Gerhard,
der folgende Code (ungetestet) muss ins Klassenmodul des Tabellenblatts, in dem alles passieren soll

Private Sub Worksheet_Change(ByVal Target As Range)
Dim lrgFindDate As Range
If Target.Address = "$C$5" Then
If Target.Value  "" And IsDate(Target.Value) Then
Set lrgFindDate = Range("C9:C373").Find(what:=Target.Value, LookIn:=xlValues, lookat:=xlWhole)
If Not lrgFindDate Is Nothing Then
Range("C5:X5").Copy Range("C" & lrgFindDate.Row)
Set lrgFindDate = Nothing
End If
End If
End If
End Sub
Hilfts?
Ciao
Thorsten
AW: VBA Werte in bestimmte Zeile kopieren
16.06.2022 10:12:52
Gerhard
Hallo Oberschlumpf! Vielen Dank für deine rasche Antwort. Sorry, warum Klassenmodul und nicht Makro? Ich habe vergessen zu erwähnen, dass ich die Suche/Kopieren als Makro z.B. mit dem Namen "Buchen" ausführen möchte. Danke! LG Gerhard
Anzeige
AW: VBA Werte in bestimmte Zeile kopieren
16.06.2022 10:27:29
Oberschlumpf
Hi,
weil das Worksheet_Change-Ereignis nur im jeweiligen Klassenmodul funktioniert.
Und..ähh?...im Klassenmodul, egal welches, sind auch alles Makros, bzw VBA-Befehle.
(ich vermute, deine irreführende Frage "...Sorry, warum Klassenmodul und nicht Makro?..." kommt daher, weil du dich mit VBA noch nicht so gut auskennst)
Natürlich könntest du meinen Code auch in einem allgemeinen Modul unter...

Sub Buchen()
...hier mein Code ohne die Private Sub + End Sub Zeilen
End Sub
...speichern.
Aber dann müsstest du dafür sorgen, dass der richtige Wert (Inhalt aus Zelle C5) im richtigen Moment an das Makro "Buchen" übergeben wird, und dass im Makro "Buchen" korrekt auf das richtige Tabellenblatt referenziert wird.
Wenn du per Upload eine Bsp-Datei mit ausreichend vielen Bsp-Datenzeilen zeigst, kann ich versuchen, dir den Code in die Bsp-Dateie einzubauen.
Ciao
Thorsten
Anzeige
AW: VBA Werte in bestimmte Zeile kopieren
16.06.2022 10:48:27
Matthias
Hallo,
Zitat:
Angenommen, das Datum findet sich in C200, dann sollte D5:X5 nach D220:X220 kopiert werden.
? Bist Du sicher das Du nicht D200:X200 meinst.
Geht übrigens auch mit Formeln.(ohn VBA)
In D9:
=WENNFEHLER(SVERWEIS($C9;$C$5:$X$5;SPALTE()-2;0);"") und nach rechts und nach unten kopieren.
Gruß ...
AW: VBA Werte in bestimmte Zeile kopieren
16.06.2022 12:10:24
Gerhard
@MatthiasL: Ja, du hast recht, es sollte in die Zeile mit dem übereinstimmenden Datum kopiert werden, also in die Zeile 200!
VBA braucht es deshalb, weil sich das Eingabedatum und die zu kopierenden Daten täglich ändern. Es wird so eine Art Journal, das täglich fortgeschrieben wird.
Anzeige
AW: VBA Werte in bestimmte Zeile kopieren
16.06.2022 11:37:36
GerdL
Moin Gerhard!

Sub Buchen()
If WorksheetFunction.CountIf(Worksheets("REPORT").Range("C9:C373"), _
Worksheets("REPORT").Range("C5").Value) Then
Worksheets("REPORT").Range("D5:X5").Copy _
Worksheets("REPORT").Cells(Application.Match(CLng(CDate(Worksheets("REPORT").Value)), _
Worksheets("REPORT").Range("C9:C373"), 0) + 8, 4)
End If
End Sub
Gruß Gerd
AW: VBA Werte in bestimmte Zeile kopieren
16.06.2022 12:50:52
Gerhard
Hallo Gerd! Vielen Dank! Allein von der ästhetischen Betrachtung gefällt mir dein Code sehr gut. Leider gibt es einen Laufzeitfehler 438 und die letzten 3 Zeilen vor end if werden gelb markiert. Vielleicht ist es ein Klammer-Problem, aber ich kann es nicht identifizieren. Magst du es dir nochmals ansehen? Danke! LG Gerhard
Anzeige
AW: VBA Werte in bestimmte Zeile kopieren
16.06.2022 13:05:49
GerdL
Nein, entschuldige bitte. Da ging mir beim Aufhübschen ein Range verloren.

Sub Buchen()
If WorksheetFunction.CountIf(Worksheets("REPORT").Range("C9:C373"), _
Worksheets("REPORT").Range("C5").Value) Then
Worksheets("REPORT").Range("D5:X5").Copy _
Worksheets("REPORT").Cells(Application.Match(CLng(CDate(Worksheets("REPORT").Range("C5").Value)), _
Worksheets("REPORT").Range("C9:C373"), 0) + 8, 4)
End If
End Sub
Gruß Gerd
AW: VBA Werte in bestimmte Zeile kopieren
16.06.2022 13:12:46
Gerhard
Vielen, lieben Dank, Gerd! Dein Code funktioniert hervorragend und ist zudem in seiner Eleganz für mich verständlich!
Problem gelöst.
Anzeige
AW: VBA Werte in bestimmte Zeile kopieren
16.06.2022 13:17:12
Gerhard
Noch ein Wunsch. In den Zellen in Zeile 5 stehen Formeln. Es sollen aber nur die Werte kopiert werden, nicht die Formeln. Kannst du mir nochmals helfen? Danke!
AW: VBA Werte in bestimmte Zeile kopieren
16.06.2022 14:10:03
GerdL
Hallo Gerhard,
probiere mal.

Sub Buchen_2()
Dim Zeile As Long
With Worksheets("REPORT")
If WorksheetFunction.CountIf(.Range("C9:C373"), .Range("C5").Value) Then
Zeile = Application.Match(CLng(CDate(.Range("C5").Value)), .Range("C9:C373"), 0) + 8
.Range("D" & Zeile & ":X" & Zeile).Value = .Range("D5:X5").Value
End If
End With
End Sub
Gruß Gerd
AW: VBA Werte in bestimmte Zeile kopieren
16.06.2022 15:08:06
Gerhard
Vielen, vielen Dank Gerd, für deine wiederholten Bemühungen um mein Problem! Ich weiß das sehr zu schätzen.
Du hast mich sehr glücklich gemacht. Es funktioniert nur alles genauso, wie gewünscht.
Ein bißchen verstehe sogar deinen Code ;) Herzliche Grüße aus Tirol, Gerhard
Anzeige

321 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige