Schleife bei bestimmter Zeile beenden | Herbers Excel-Forum


Betrifft: Schleife bei bestimmter Zeile beenden
von: Sven
Geschrieben am: 12.11.2009 11:22:38

Hallo zusammen,
sitze gerade ziemlich auf der Leitung und habe auch über Neztrecherchen keine Lösung gefunden. Hier mein Problem:
Nachfolgendes (Übungs!)-Makro kopiert Zellen aus dem aktiven Worksheet in alle nachfolgenden Worksheets des Workbooks. Zielzelle (Anfang) des Kopiervorgangs ist immer die unterste freie Zeile der Spalte A. Wiederholt wird der Vorgang so oft, wie in Zelle E5 eingegeben.
Jezt möchte ich die zusätzliche Bedingung formulieren, dass das dieser Vorgang immer bei Zeile 50 endet. Also grundsätzlich so oft in E5 angegeben, AUßER Zeile 5 wird erreicht, dann abbrechen.
hier mal mein Makro:

Sub Markierung_x_fach_kopieren()
    
    Dim Loletzte As Long
    
a = Cells(5, 5).Value
    
 For I = a To 1 Step -1
 
    For Each Worksheet In ActiveWorkbook.Worksheets
    
    Select Case Worksheet.Name
    Case "Mast"
    Case Else
    
    If IsEmpty(Worksheet.Cells(1, 1)) Then
    
        With Worksheet
            
            Loletzte = IIf(IsEmpty(.Range("A65536")), _
            .Range("A65536").End(xlUp).Row + 1, 65536)
            Selection.Copy Destination:=.Cells(Loletzte, 1)
    
        End With
    End If
    
    End Select
    Next Worksheet
Next I
End Sub
Wie gesagt, ein Übungsprojekt ...
Gruß, Sven

Betrifft: If mit Exit For......
von: robert
Geschrieben am: 12.11.2009 11:36:02
hi,
ich denke so:
I abfragen, wenn bedingung erfüllt,
Then Exit For
gruß
robert

Betrifft: AW: If mit Exit For......
von: Sven
Geschrieben am: 12.11.2009 11:53:57
Hallo robert!
Hm, komme ich leider nicht mit ...
I lege ich doch selbst in Zelle E5 fest. Ich möchte ja, dass die Schleife auch schon for dem I-ten mal abgebrochn wird, falls inzwischen Zeile 5 (besser "X") erreicht wird.
Vielleicht nochmal in besseren Worten: Das Makro soll den Kopiervorgang I - mal wiederholen, aber NIE über die Zeile X hinausschreiben.
Oder habe ich Dich falsch verstanden?
Gruß, Sven

Betrifft: AW: If mit Exit For......
von: robert
Geschrieben am: 12.11.2009 12:06:28
hi,
If ....befehl eingefügt
gruß
robert

Sub Markierung_x_fach_kopieren()
      
      Dim Loletzte As Long
      
  a = Cells(5, 5).Value
      
   For I = a To 1 Step -1
    
         If I = 5 Then Exit For ' statt 5 deine gewünschte Zeile
   
      For Each Worksheet In ActiveWorkbook.Worksheets
      
      Select Case Worksheet.Name
      Case "Mast"
      Case Else
      
      If IsEmpty(Worksheet.Cells(1, 1)) Then
      
          With Worksheet
              
              Loletzte = IIf(IsEmpty(.Range("A65536")), _
              .Range("A65536").End(xlUp).Row + 1, 65536)
              Selection.Copy Destination:=.Cells(Loletzte, 1)
      
          End With
  
      End If
      
      End Select
  
      Next Worksheet
  
  Next I
  
  End Sub


Betrifft: AW: If mit Exit For......
von: Sven
Geschrieben am: 12.11.2009 13:02:23
Hir Robert,
sry, das war nicht das was ich meinte. Bin aber inzwischen selbst darauf gekommen... Ich frage den wert für Loletzte ab = Zeilenkoordinate - Falls diese größer b (mein Wert in C6), wird die Schleife unterbrochen (GoTo TooMuch). Effekt: Alle Blätter werden nur noch bis zu der von mir vorher festgelegten Zeile befüllt!
Sieht dann so aus:

Sub Markierung_x_fach_kopieren_2()
      
      Dim Loletzte As Long
      
  a = Cells(5, 5).Value
  b = Cells(6, 5).Value
      
   For I = a To 1 Step -1
     
      For Each Worksheet In ActiveWorkbook.Worksheets
      
      Select Case Worksheet.Name
      Case "Mast"
      Case Else
      
      If IsEmpty(Worksheet.Cells(1, 1)) Then
      
          With Worksheet
              
              Loletzte = IIf(IsEmpty(.Range("A65536")), _
              .Range("A65536").End(xlUp).Row + 1, 65536)
              
              If Loletzte > b Then GoTo TooMuch
            
                Selection.Copy Destination:=.Cells(Loletzte, 1)
            
TooMuch:
            
          End With
  
      End If
      
      End Select
  
      Next Worksheet
  
  Next I
  
  End Sub
Vielen Dank fürs mitgrübeln ;-))
Gruß, Sven

Beiträge aus den Excel-Beispielen zum Thema "Schleife bei bestimmter Zeile beenden"