|  
                                             
	Hallo zusammen, 
	  
	Ich berechne per untenstehenden Code in jeweils zwei Tabellenblättern über mehrere Zeilen und Spalten. 
	Ich ziehe einen Wert zeilenweise ab (Januar bis Dezember). 
	Nun sollen jeweils neue Spalten eingetragen werden, welche zwischen den bisherigen Spalten kommen, d.h. Januar, neue Spalte  rechts (Abzug Januar), Februar, neue Spalte rechts (Abzug Feb.) usw.... 
	In den neuen Spalten soll am Ende die Differenz zwischen Ursprungswert und Wert nach Abzug stehen. Der  Wert soll zusätzlich mit jedem Abzug addiert werden. 
	Beispiel: Januar: 50 Februar: 40 März: 30 
	Abzug laut Code: 60 
	Neuer Wert Jan 0 Feb. 30 
	Abzug Jan: 50  Abzug Feb. 10 
	Neuer Abzug laut Code: 20 
	Neuer Wert Jan. 0 Feb. 10 
	Abzug: Jan. 50 Abzug Februar: 30 
	Dafür muss aber im untenstehendem Code nur noch jede zweite Spalte angesprochen werden. 
	Case hat nicht funktioniert. 
	Jemand eine Idee? 
	Ben 
	  
Sub Überstundenabbauen_Funktion(sg As String)
Dim LeZe As Long
Dim n As Single
Dim i As Single
Dim Dneu As Single
Dim jahr As Integer
Dim ws1, ws2 As String
'jahr = Year(Date)
'ws2 = sg & jahr
'ws1 = sg & (jahr - 1)
ws1 = sg & "2017"
ws2 = sg & "2018"
LeZe = ThisWorkbook.Worksheets(ws2).Cells(Rows.Count, 4).End(xlUp).Row
For n = 4 To LeZe 'Zeilen
    Dneu = Worksheets(ws2).Cells(n, 4)
        For i = 5 To 18 ' Spalten E bis R
            If Dneu <= Worksheets(ws1).Cells(n, i) Then
               Worksheets(ws1).Cells(n, i) = Worksheets(ws1).Cells(n, i) - Dneu
               Dneu = 0
            Else
               Dneu = Dneu - Worksheets(ws1).Cells(n, i)
               Worksheets(ws1).Cells(n, i) = 0
            End If
        Next i
      
      
      
      If Dneu = 0 Then
        Worksheets(ws2).Cells(n, 4) = 0
        GoTo weiter
      End If
      
      For i = 5 To 18 ' Spalten E bis R
            If Dneu <= Worksheets(ws2).Cells(n, i) Then
               Worksheets(ws2).Cells(n, i) = Worksheets(ws2).Cells(n, i) - Dneu
               Dneu = 0
            Else
               Dneu = Dneu - Worksheets(ws2).Cells(n, i)
               Worksheets(ws2).Cells(n, i) = 0
            End If
        Next i
        Worksheets(ws2).Cells(n, 4) = 0
weiter:
Next n
End Sub
	  
     |