Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1312to1316
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Schleife in Schleife Probleme
11.05.2013 19:02:17
Matze
Huhu @ All,
...was versteht denn der Matze heute wieder nicht richtig?
Die For A Schleife arbeitet sich ab, soweit gut, aber:
die For i Schleife wird nur im letzten Sheet ausgeführt, also im letzten For A durchlauf.
bin wieder im großen Wald mit den ,...wo sind die Bäume?
hier die Codezeilen:
Option Explicit
Private Sub CommandButton1_Click()
Dim Zeile As Long, Loletzte As Long
Dim i As Long, A As Long
Dim Zelle As Range, Bereich As Range
Application.ScreenUpdating = False
'bevor die Schleifen starten die Daten übertragen
'Call UebergabeVormontageNachIstbestandSpalteG
For A = 6 To ActiveWorkbook.Sheets.Count '5 Sheets
ActiveWorkbook.Sheets(A).Select
ActiveWorkbook.Sheets(A).Activate
Zeile = Cells(Rows.Count, 2).End(xlUp).Row
'Alle 5 Sheets sind gleich aufgebaut
For i = 3 To 6 'Anzahl zu überprüfender Zeilen
If Application.WorksheetFunction.Count(Range("F" & i & ":H" & i)) > 0 Then
Range(Cells(i, 3), Cells(i, 13)).Copy
Range("C" & Zeile + 1).PasteSpecial Paste:=xlPasteValues
Range("B" & Zeile + 1) = Date & " - " & Format(Time, "hh:mm")
Application.CutCopyMode = False
Zeile = Zeile + 1
End If
Next i
Range("F3:H6").ClearContents 'leeren der Eingabefelder
Next A
Application.ScreenUpdating = True
End Sub
Matze Kopfkratzzzz

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
For A = 6 ? To.......owT
11.05.2013 19:15:02
robert

Richtige Adressierung ist das A & O,
11.05.2013 22:10:03
EtoPHG
der VBA-Programmierung Matze,
...und dann sind auch diese unsäglichen, überflüssigen .Selects und .Activates überflüssig.
Da sich dein Code in einem Tabellenblatt befindet ist die Adressierung des Activeworkbook ebenfalls überflüssig, da du ja denn Button in dieser Arbeitsmappe klicken musst. Es sein denn du rufst diesen Code per VBA von einer anderen Mappe auf, was aber (sehr) schlechter Programmierstil wäre ;-)
Probiers mal so:
 Private Sub CommandButton1_Click()
Dim Zeile As Long, Loletzte As Long
Dim i As Long, A As Long
Application.ScreenUpdating = False
'bevor die Schleifen starten die Daten übertragen
'Call UebergabeVormontageNachIstbestandSpalteG
For A = 6 To Sheets.Count '5 Sheets
With Sheets(A)
Zeile = .Cells(.Rows.Count, 2).End(xlUp).Row
'Alle 5 Sheets sind gleich aufgebaut
For i = 3 To 6 'Anzahl zu überprüfender Zeilen
If WorksheetFunction.Count(.Range("F" & i & ":H" & i)) > 0 Then
.Range(.Cells(i, 3), .Cells(i, 13)).Copy
.Range("C" & Zeile + 1).PasteSpecial Paste:=xlPasteValues
.Range("B" & Zeile + 1) = Date & " - " & Format(Time, "hh:mm")
Application.CutCopyMode = False
Zeile = Zeile + 1
End If
Next i
.Range("F3:H6").ClearContents 'leeren der Eingabefelder
End With
Next A
Application.ScreenUpdating = True
End Sub

Übrigends, Sheets kann eine gefährliche Auswahl sein, denn diese Collection enthält alle Arten von Blättern, also z.B. auch Diagramme. Würde z.B. ein solches zwischen deinen Blätter der For-Schlaufe liegen, landet dein Code im Nirwana. Worksheets ist die bessere Wahl, da sie nur Tabelleblätter (mit Zellen) enthält.
Gruess Hansueli

Anzeige
AW: Richtige Adressierung ist das A & O,
12.05.2013 00:18:49
Matze
genau daran lag es HansUeli,
ich sagte noch,...wo sind die Bäume. Besten Dank.
Matze

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige