ich nehme hier Bezug auf diesen Archivierten Beitrag
https://www.herber.de/forum/archiv/1776to1780/t1776739.htm#1777851
Kurz zusammengefasst:
Das Dokument hat insgesamt 4 Tabellenblätter ("Anfrage" , "ÜB", "MAT", "FERT"). In der "Anfrage können Farbnamen, Farbnummern und Informationen bezüglich der Zuschnitte (ZS1 bis ZS4) eingetragen werden.
Hier mal ein Link zu einer Dummydatei
https://www.herber.de/bbs/user/139605.xlsx
Das Ziel des Codes soll es sein, die Tabellenblätter "ÜB", "MAT" und "FERT" für alle Farben und entsprechend für alle Zuschnitte kopieren.
Als Beispiel:
Farbe 1 (rot, Nr. 93645) und es befinden sich Informationen in ZS1 bis ZS4.
Dann sollen die Blätter nach dem folgenden Schema kopiert bzw erstellt werden.
"ÜB - 93645 - ZS1", "MAT - 93645 - ZS1", "FERT - 93645 - ZS1"
"ÜB - 93645 - ZS2", "MAT - 93645 - ZS2", "FERT - 93645 - ZS2"
"ÜB - 93645 - ZS3", "MAT - 93645 - ZS3", "FERT - 93645 - ZS3"
"ÜB - 93645 - ZS4", "MAT - 93645 - ZS4", "FERT - 93645 - ZS4"
Dies soll für alle Farben gemacht werden.
Folgenden Code habe ich freundlicherweise von Franz schon bekommen:
Sub AnfrageBlaetterKopieren()
Dim wsAnfrage As Worksheet, wsUeb As Worksheet, wsMat As Worksheet, wsFert As Worksheet
Dim rng As Range
Dim spaZS As Long, zeiZS As Long, StatusCalc As Long
Dim strZS As String, dblEuro As Double, dblStueck As Double, varZS_Nr As Variant
Dim wsZiel As Worksheet
With Application
.ScreenUpdating = False
StatusCalc = .Calculation
.Calculation = xlCalculationManual
End With
zeiZS = 92 'Zeile mit Zuschnitt-Nummern
For Each Rng In wsAnfrage.Range("D33:M33")
bezZS = 94
spaSu = 50 'Zeile für die Gesamtsumme
spaPr = 55 'Zeile für den Preis
spaGE = 56 'Zeile für den Gewinn
If Not IsEmpty(Rng) Then
For spaZS = 5 To 11 Step 2
strZS = wsAnfrage.Cells(zeiZS, spaZS).Value
If wsAnfrage.Cells(zeiZS + 2, spaZS).Text "" Then 'prüft, ob EURO-Betrag eingetragen _
_
is
dblEuro = wsAnfrage.Cells(zeiZS + 2, spaZS).Value
dblStueck = wsAnfrage.Cells(zeiZS + 4, spaZS).Value
varZS_Nr = wsAnfrage.Cells(zeiZS + 6, spaZS).Value
wsUeb.Copy after:=Sheets(Sheets.Count)
Set wsZiel = ActiveSheet
With wsZiel
.Name = wsUeb.Name & " - " & Rng.Offset(-1, 0).Text & " - " & strZS
.Range("E61").Value = dblEuro
.Range("M8").Value = Rng.Offset(-1, 0).Text
For i = 4 To 14
' .Range("H10").Value = wsAnfrage.Cells(spaSu, i).Value
' .Range("H101").Value = wsAnfrage.Cells(spaPr, i).Value
' .Range("P108").Value = wsAnfrage.Cells(spaGE, i).Value
'so werden die 11 Werte in die Zelle und die darunter liegenden Zellen eingetragen
.Range("H10").Offset(i - 4, 0).Value = wsAnfrage.Cells(spaSu, i).Value
.Range("H101").Offset(i - 4, 0).Value = wsAnfrage.Cells(spaPr, i).Value
.Range("P108").Offset(i - 4, 0).Value = wsAnfrage.Cells(spaGE, i).Value
'so werden die 11 Werte in die Zelle und die rechts daneben iegenden Zellen eingetragen
.Range("H10").Offset(0, i - 4).Value = wsAnfrage.Cells(spaSu, i).Value
.Range("H101").Offset(0, i - 4).Value = wsAnfrage.Cells(spaPr, i).Value
.Range("P108").Offset(0, i - 4).Value = wsAnfrage.Cells(spaGE, i).Value
Next i
End With
wsMat.Copy after:=Sheets(Sheets.Count)
ActiveSheet.Name = wsMat.Name & " - " & Rng.Offset(-1, 0).Text & " - " & strZS
wsFert.Copy after:=Sheets(Sheets.Count)
ActiveSheet.Name = wsFert.Name & " - " & Rng.Offset(-1, 0).Text & " - " & strZS
End If
Next spaZS
End If
Next Rng
Sheets("Anfrage").Select
With Application
.ScreenUpdating = True
.Calculation = StatusCalc
End With
End Sub
Leider befinden sich in dem Code noch zwei Probleme und ich bin mit meinem Latein am Ende und weiß nicht, wie ich es lösen kann.-> Der Code läuft nicht, wenn keine Angaben in den Feldern für ZS1 bis ZS4 steht. Wenn hier keine Informationen stehen, soll der Code die Tabellenblätter "ÜB", "MAT" und "FERT"
für die erste Farbe erstellen und dann die nächste Farbe auswählen.
-> Die Schleife mit dem i funktioniert leider nur bedingt, es werden alle Anweisungen mit dem i abgearbeitet, bevor das nächste Tabellenblatt erstellt wird.
Es sollte allerdings so laufen, dass für das erste Blatt "ÜB" die ersten Werte aus der i-Schleife verwendet werden und beim nächsten "ÜB" Blatt dann die nächsten.
Hierbei ist noch zustätzlich anzumerken, dass falls es ZS1 bis ZS4 gibt und bspw. zwei Farben, dann soll der erste i-Wert für ZS1 - 4 Farbe eins gelten und der zweite i-Wert
dann für ZS1 bis ZS4 Farbe zwei.
Das ganze ist ein wenig kompliziert, ich hoffe ich konnte es dennoch einigermaßen verständlich erklären.
Für Fragen stehe ich zur Verfügung!
Vielen Dank schon ein mal im Voraus!
Gruß
David