AW: objekte
17.09.2007 10:56:18
fcs
Hallo schnierle,
For zeile = 144 To .Cells(.Rows.Count, 2).End(xlUp).Row
anzahl = .Cells(zeile, 2).Value
Das ist ja etwas anders als in meinem Vorschlag, basierend auf deiner Beispieltabelle.
With wksZiel
For zeile = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row
anzahl = .Cells(zeile, 1).Value
Diese For-Next-Schleife arbeitet in der Spalte mit den Typ-EInträgen die Typen ab.
144 ist die 1. Zeile in der ein Typ steht.
Der ausdruck ".Cells(.Rows.Count, 2).End(xlUp).Row"
berechnet in der Spalte 2 (B) der als "wksZiel" definierten Tabelle die unterste/letzte Zeile in der die Zelle nicht leer ist. Wenn du alle Typen in der Tabelle eingegeben hast und sich nichts mehr ändert, dann kannst du natürlich auch die Zeile fest im Code eintragen.
anzahl = .Cells(zeile, 1).Value
"anzahl" ist die Variable in der die Anzahl zu erstellender Kopien gespeichert wird. Der Wert wird in der der als "wksZiel" definierten Tabelle aus der Zelle in der Reihe "zeile", Spalte 1 (A), ausgelesen.
Dass der Fehler scheinbar in dieser Zeile ist kann daran liegen, dass 144 größer ist als die Zeilennummer der letzten Zelle mit Inhalt in Spalte 2. In diesem Fall wird die For-Next-Schleife direkt beendet.
Du muss die Spaltennummern und die Startzeile der For-Next-Schleife ggf. an den jetzt scheinbar etwas anderen Aufbau der Tabelle anpassen.
Aufpassen:
In den folgenden Codezeilen werden Werte aus Spalte 3 (C) ausgelesen bzw. hineingeschrieben. _
Falls in Spalte C schon Werte stehen, dann gib statt 3 eine andere normalerweise leere Spalte im Code an.
With BildNeu
.Name = wksZiel.Cells(zeile, 2).Value & "_" _
& Format(wksZiel.Cells(zeile, 3) + 1, "00")
.Top = Zelle.Top
.Left = Zelle.Left
End With
'Zählnummer für Bild erhöhen
wksZiel.Cells(zeile, 3) = wksZiel.Cells(zeile, 3) + 1
Gruß
Franz