Schleifen durchlauf Reihenfolge
29.05.2018 11:05:16
Ingo
ich hätte da mal eine Frage bezüglich der Reihenfolge der Durchläufe von Schleifen.
Anbei mein Code :
Sub Stunden_berechnen()
'Fehlerverwaltung
On Error Resume Next
'Neues Tabellenblatt
Dim v As String
Dim i As Integer
Dim z As Integer
Dim w As Integer
Dim wks As Worksheet
Dim blatt As String
Application.DisplayAlerts = False
blatt = "Auswertung"
For Each wks In ActiveWorkbook.Worksheets
If wks.Name = blatt Then
Sheets(blatt).Delete
End If
Next
Debug.Print ActiveSheet.Name
Sheets.Add Before:=Sheets(1)
ActiveSheet.Name = "Auswertung"
Application.DisplayAlerts = True
ActiveSheet.Select
Application.ScreenUpdating = False
For i = 1 To Sheets.Count
w = ActiveSheet.Index + 1
' Feiertagsspalte finden
Dim cell As CellFormat
Dim Feiertag As String
Dim WasFeiertag As String
Dim AdrGefFeiertag As String ' Spaltenbuchstabe
Dim SpaltenNrFeiertag As Integer ' Spaltennummer
Dim LetzteFeiertag As String ' Letzte Zeilennummer
Dim LetzteFeiertag1 As String ' Letzte Zeilennummer
Dim BeginnFeiertag1 As String
Dim AdresseFeiertag As Range 'Inhalt Feitagüberschrift /Adress als Adressangabe
Dim Bereich As String
WasFeiertag = "Feiertag 25%"
Set AdresseFeiertag = Cells.Find(WasFeiertag, lookat:=xlPart, LookIn:=xlFormulas)
AdrGefFeiertag = Left(AdresseFeiertag.Address(True, False), _
InStr(ActiveCell.Address(True, False), "$") - 1)
SpaltenNrFeiertag = Range(AdrGefFeiertag & 1).Column
LetzteFeiertag = Cells(Rows.Count, SpaltenNrFeiertag).End(xlUp).Row
LetzteFeiertag1 = Range(AdrGefFeiertag & LetzteFeiertag).Offset(-1, 0).Address
BeginnFeiertag1 = AdresseFeiertag.Offset(1, 0).Address
' Zellen runden im Bereich
Bereich = AdresseFeiertag.Address & " " & LetzteFeiertag1
Dim Zelle As Range
For Each AdresseFeiertag In Range(Bereich)
AdresseFeiertag.Offset(1, 0).Value = _
_
_
1 'Math.Round(Range(AdrGefFeiertag & z).Value, 0)
AdresseFeiertag = AdresseFeiertag. _
Offset(1, 0)
MsgBox AdresseFeiertag.Offset(1, 0). _
_
_
Address
Next AdresseFeiertag
'Auswertentabelle mit Datenfüllen
Sheets(1).Range("A1").Value = "Dienstnummer Name, Vorname"
Sheets(1).Range("C1").Value = "Sontagsstunden"
Sheets(1).Range("D1").Value = "Feiertagsstunden"
Sheets(1).Range("E1").Value = "Nachtstunden"
Sheets(1).Range("F1").Value = "Pausenstunden"
'Sheets(1).Range("B1").Value = "Monat"
'aaa1 = Mid(Range("E3"), 4, 2)
'Sheets(1).Range("B" & 0 + i).Value = Format(DateSerial(1, aaa1, 1), "MMMM")
Sheets(1).Range("A" & 0 + i).Value = ActiveWorkbook.ActiveSheet.Name
'Sheets(1).Range("C" & 0 + i).Value = Cells(LetzteSonntag, SpaltenNrSonntag).Value
Sheets(1).Range("D" & 0 + i).Value = Cells(LetzteFeiertag, SpaltenNrFeiertag).Value
'Sheets(1).Range("E" & 0 + i).Value = Cells(LetzteNacht, SpaltenNrNacht).Value
'Sheets(1).Range("F" & 0 + i).Value = Cells(LetztePause, SpaltenNrPause).Value
ActiveWorkbook.Worksheets(w).Activate
Next i
Sheets("Auswertung").Activate
Application.PrintCommunication = True
ActiveSheet.PageSetup.PrintArea = "R1C1:R75C6"
Cells.EntireColumn.AutoFit
MsgBox "Die Berechungen wurden durchgeführt!"
Application.ScreenUpdating = True
End Sub
Jetzt habe ich das Problem das die erste Zeile geändert wird und danach wir ins nächste Tabellenblatt gesprungen und die erste Zeile wird geändert und so fort.
Mein Wunsch ist es aber das der Bereich zuerst im ersten Tabellenblatt abgearbeitet wird. Dann ins nächste Tabellenblatt wechseln und wieder der Bereich abgearbeitet wir und so folgend.
Vielen Dank im Voraus für die Hilfe ; )