Hi Holger,
 damit suche ich nur die letzte Spalte in der ein Wert (Name) steht.
 Dann lass ich ich in jede Spalte unterhalb der SuchZeile von Spalte1 bis SpalteL fünf Werte aus anderen Sheets eintragen. Das sind Zahlenwerte. In der 4. Zeile unterhalb wird nichts eingetragen.
 Wenn ich in den Sheets "Namen" lösche ändert sich der Bereich in der SuchZeile. Die Werte unterhalb einer Spalte ohne "Name" in Suchzeile werden mit diesem Code nicht berücksichtigt und somit auch nicht gelöscht.
 folgender Code:
 
   Dim Datenblatt As Worksheet, Spalte As Long
   Dim Zeile As Long, SpalteL As Long, SpalteR As range, Found As range, varSupplier, Bereich As String
   Set Found = Nothing
   Zeile = 70 'Zeile mit den Suppliernamen im Hauptdatenblatt
   Const Spalte1 As Long = 18 'Spalte,die die erste Spalte in Zeile 70 mit Suppliername ist!
   Set Datenblatt = Worksheets("Overview")
   With Datenblatt
     'Letzte Spalte mit Supplier in Zeile 70 ermitteln
     SpalteL = .Cells(Zeile, .Columns.count).End(xlToLeft).Column
     'Spalten mit Suppliernamen abarbeiten
     For Spalte = Spalte1 To SpalteL
       '3. Zellen unterhalb Suppliername: Inhalte löschen
       .range(.Cells(Zeile + 1, Spalte), .Cells(Zeile + 5, Spalte)).ClearContents
       'Suppliername für Suche merken
       varSupplier = .Cells(Zeile, Spalte).Value
       'Supplier in den 3 Blättern im benamten bereich suchen
       'Wert aus Spalte links von gefundener Zelle in Zeile 71 eintragen
       Call SubSuchen(rngBereich:=Worksheets("Philips (A)").range("SupplierAs"), _
         varSuchen:=varSupplier, wks:=Datenblatt, ZielZeile:=Zeile + 1, ZielSpalte:=Spalte)
       'Wert aus Spalte links von gefundener Zelle in Zeile 72 eintragen
       Call SubSuchen(rngBereich:=Worksheets("Philips (EU)").range("SupplierEU"), _
         varSuchen:=varSupplier, wks:=Datenblatt, ZielZeile:=Zeile + 2, ZielSpalte:=Spalte)
       'Wert aus Spalte links von gefundener Zelle in Zeile 73 eintragen
       Call SubSuchen(rngBereich:=Worksheets("Philips (US)").range("SupplierUS"), _
         varSuchen:=varSupplier, wks:=Datenblatt, ZielZeile:=Zeile + 3, ZielSpalte:=Spalte)
         
       .Cells(Zeile + 5, Spalte).Value = .Cells(Zeile + 1, Spalte).Value + _
       .Cells(Zeile + 2, Spalte).Value + .Cells(Zeile + 3, Spalte).Value
     Next
 
 
 Hab ein bisschen hierran gebastelt, aber funzt immer noch nicht ganz =(
 wo er meckert,  untermal ich mal "fett"
 
 lg
 adrian
 
 Holger schrieb am 28.11.2008 08:48:01:
 
 Hallo Adrian,
 wenn ich dich recht verstanden habe, ermittelt du mit
 "SpalteL = .Cells(Zeile, .Columns.count).End(xlToLeft).Column" 
 die letzte Spalte, in der in den relevanten 5 Zeilen etwas steht. Machst du das für alle 5 Zeilen und ermittelst das Maximum oder sind immer alle 5 Zeilen gefüllt, so dass das Maximum bereits nach einer Bestimmung feststeht?
 Wenn du aber das Maximum bestimmt hast, können in den rechts von der letzten Spalte stehenden Spalten keine Werte mehr stehen. Wozu also der Aufwand?
 Gruß
 Holger 
 
 adrian schrieb am 27.11.2008 12:08:25:
 
 Hallo,
 ich bin noch Anfänger in VBA und würde mich freuen wenn mir hierbei jemand helfen kann!
 
 Es werden jeweils 5 Werte in einer Spalte unterhalb einer bestimmten Zeile eingetragen.
 Das gilt für:
 For Spalte = Spalte1 To SpalteL
 Die Anzahl der Spalten kann variieren und die letzte wird mittels "SpalteL = .Cells(Zeile, .Columns.count).End(xlToLeft).Column" ermittelt.
 
 folgendes möchte ich nun machen, aber es funktioniert leider nicht:
 
 Falls in den 5 Zeilen der SpalteL+1 Werte sind, alle 5 löschen und schauen ob in den Zeilen der SpalteL+2 ebenfalls werte stehen, ggf. löschen, usw.!
 
 hier mein Code, aber er funktioniert leider nicht, weil ich nicht weiß, wie ich diese 5Zeilen in der SpalteR (=SpalteL+zähler) als Bereich/Range Speichern soll...oder ob es so überhaupt möglich ist.
 
   With Datenblatt
     Set SpalteR = .range(.Cells(Zeile + 1, SpalteL + 1), .Cells(Zeile + 1, SpalteL + 1))
     Set Found = SpalteR.Find(what:=Cells.Value, LookIn:=xlValues, Lookat:=xlWhole)
     While Not Found Is Nothing
         SpalteR.ClearContents
         Set SpalteR = SpalteR.Offset(0, 1)
           Set Found = SpalteR.Find(what:=Cells.Value, LookIn:=xlValues, Lookat:=xlWhole)
     Wend
   End With
 
 lg
 adrian     |