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

Zeilen so oft kopieren wie Zellwert

Zeilen so oft kopieren wie Zellwert
26.05.2014 15:46:24
aalex
Guten Tag, liebe Forum-Gemeinde,
ich hoffe, ihr könnt mir bei meinem Problem helfen. Ich habe ein Worksheet mit Bestellungen und soll nun Zeilen, bei denen sich der Bestellstatus ändert (händische Eingabe), in ein anderes Worksheet (Geräteliste) übertragen. Die Suche nach dem Bestellstatus und eine Abänderung des Status in der Folge, sowie die Kopie in das andere Worksheet habe ich schon geschrieben, jedoch kann eine Bestellung(/Zeile) mehrere Geräte enthalten , weswegen die Zeile so oft kopiert werden soll, wie die Bestellung Geräte enthält.
Leider habe ich mich erst letzte Woche in das Thema VBA eingelesen und noch zu wenige Kenntnisse, um diese Aufgabe umzusetzen. Die Suche brachte mir leider auch keinen Erfolg bzw. ich kann die gelösten Probleme nicht auf meines übertragen.
Ich hoffe, ihr könnt mir helfen!
Viele Grüße

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen so oft kopieren wie Zellwert
26.05.2014 15:50:29
EtoPHG
Hallo aalex,
Wenn du schon Code und den Datenaufbau hast, dann stell eine (anonymisierte) Beispielmappe mit deinem bereits vorhanden Code ins Forum (siehe [ Zum File-Upload ] Button und dem Editorfenster des Forums).
Gruess Hansueli

AW: Zeilen so oft kopieren wie Zellwert
27.05.2014 08:55:22
EtoPHG
Hallo aalex,
Ersetzt den Code im Tabellenblatt durch diesen:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Const cZielTabelle = "Geräteliste"
Const cStatusMove = "bestellt"
Const cStatusCopy = "übertragen"
Dim wsZiel As Worksheet
Dim lZielRow As Long, rC As Range
' Check auf Veränderung ab Zeile 4 in Spalte 3
If Target.Row > 4 And Target.Column = 3 Then
Application.EnableEvents = False
' Alle Zeilen die bestellt sind nach Ziel kopieren und auf cStatusCopy ändern
Set wsZiel = ThisWorkbook.Worksheets(Replace(Me.Name, "Bestellungen", cZielTabelle))
For Each rC In Intersect(Target, Range(Cells(5, 3), Cells(Rows.Count, 3)))
If rC = cStatusMove Then
lZielRow = wsZiel.Cells(wsZiel.Rows.Count, 1).End(xlUp).Row + 1
rC = cStatusCopy
Rows(rC.Row).Copy wsZiel.Cells(lZielRow, 1)
wsZiel.Rows(lZielRow).Value = wsZiel.Rows(lZielRow).Value
End If
Application.EnableEvents = True
Next rC
End If
End Sub
Die Zeilen werden automatisch übertragen, sobald der Status auf "bestellt" wechselt. Der Button ist also nicht mehr nötig.
Gruess Hansueli

Anzeige
AW: Zeilen so oft kopieren wie Zellwert
28.05.2014 09:35:17
aalex
Hallo Hansueli,
gestern wurde ich ein Jahr älter und habe mich deswegen nicht damit beschäftigen können. Ganz herzlichen Dank für den Code!!
Ich habe es auch gleich ausprobiert und das funktioniert ja nun äußerst schick :) Vielen Dank dafür! :)
Jedoch habe ich etwas bemerkt bzw. auch vielleicht nicht bemerkt: Wie hast du denn nun das Problem gelöst, dass die Daten so oft kopiert werden sollen wie die Zahl in der Spalte "Produkt"? Also dass je ein Datensatz für je ein Gerät in einer Bestellung mit bspw. 3 Geräten angelegt wird.
Viele Grüße,
aalex

AW: Zeilen so oft kopieren wie Zellwert
28.05.2014 11:41:37
EtoPHG
Hallo alex,
Das mit den Anzahl Produkten hab ich übersehen. Auch wenn mir der Sinn dieser Anwendung verborgen bleibt, so werden n-mal (0...n) die Zeilen kopiert:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Const cZielTabelle = "Geräteliste"
Const cStatusMove = "bestellt"
Const cStatusCopy = "übertragen"
Dim wsZiel As Worksheet
Dim lZielRow As Long, lCnt As Long, rC As Range
' Check auf Veränderung ab Zeile 4 in Spalte 3
If Target.Row > 4 And Target.Column = 3 Then
Application.EnableEvents = False
' Alle Zeilen die bestellt sind nach Ziel kopieren und auf cStatusCopy ändern
Set wsZiel = ThisWorkbook.Worksheets(Replace(Me.Name, "Bestellungen", cZielTabelle))
For Each rC In Intersect(Target, Range(Cells(5, 3), Cells(Rows.Count, 3)))
If rC = cStatusMove Then
rC = cStatusCopy
' Es wird 0 - n mal kopiert, je nach der Anzahl in Spalte N
For lCnt = 1 To CLng(rC.Offset(0, 11))
lZielRow = wsZiel.Cells(wsZiel.Rows.Count, 1).End(xlUp).Row + 1
Rows(rC.Row).Copy wsZiel.Cells(lZielRow, 1)
wsZiel.Rows(lZielRow).Value = wsZiel.Rows(lZielRow).Value
Next lCnt
End If
Application.EnableEvents = True
Next rC
End If
End Sub
Gruess Hansueli

Anzeige
AW: Zeilen so oft kopieren wie Zellwert
28.05.2014 14:39:54
aalex
Hallo Hansueli,
vielen vielen Dank für deine Arbeit! :)
Der Zusammenhang ist, dass in der Geräteliste für jedes Gerät separat Seriennummern, sowie diverse Service-IDs hinzugefügt werden sollen.
Nochmal vielen Dank für deine Hilfe und nun muss ich mich nur noch daran setzen und versuchen, alles auf eine nicht-anonymisierte Version zu übertragen.
Viele Grüße und einen schönen Tag,
aalex

AW: Zeilen so oft kopieren wie Zellwert
28.05.2014 15:16:55
aalex
Hallo Hansueli,
vielen vielen Dank für deine Arbeit! :)
Der Zusammenhang ist, dass in der Geräteliste für jedes Gerät separat Seriennummern, sowie diverse Service-IDs hinzugefügt werden sollen.
Nochmal vielen Dank für deine Hilfe und nun muss ich mich nur noch daran setzen und versuchen, alles auf eine nicht-anonymisierte Version zu übertragen.
Viele Grüße und einen schönen Tag,
aalex

Anzeige
AW: Zeilen so oft kopieren wie Zellwert
26.05.2014 15:50:29
EtoPHG
Hallo aalex,
Wenn du schon Code und den Datenaufbau hast, dann stell eine (anonymisierte) Beispielmappe mit deinem bereits vorhanden Code ins Forum (siehe [ Zum File-Upload ] Button und dem Editorfenster des Forums).
Gruess Hansueli

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige