Microsoft Excel

Herbers Excel/VBA-Archiv

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"