WorksheetFunction.Sum
04.12.2020 12:24:57
Jochen
Ich will WorksheetFunction.Sum in einem Makro aus einer Tabelle in anderen Tabellen ausführen diese sind variabel daher gehen bzw. will ich über den Index gehen.
Habe das ganze so Probiert
Sub vergl()
Dim letzZeil, wksi As Long, sumakt, sum1, sum2 As Variant
Dim Vergl1, Vergl2, Vergl1Proz, Vergl2Proz As Integer
Dim grün As Boolean
Dim wks1, wks2, wksa As Worksheet
wksi = ActiveSheet.Index
Set wksa = ActiveSheet
Set wks1 = Sheets(wksi - 12)
Set wks2 = Sheets((wksi - 24))
letzZeil = ActiveSheet.Cells(27, 5).End(xlUp).Row
sumakt = WorksheetFunction.Sum(wksa.Range(Cells(1, 5), Cells(letzZeil, 5)))
'Sheets(wksi - 12).Activate
sum1 = WorksheetFunction.Sum(wks1.Range(Cells(1, 5), Cells(letzZeil, 5)))
'Sheets(wksi - 24).Activate
sum2 = WorksheetFunction.Sum(wks2.Range(Cells(1, 5), Cells(letzZeil, 5)))
If sumakt > sum1 Then
Vergl1 = sumakt - sum1
Vergl1Proz = sumakt * 100 / sum1 - 100
grün = True
Else
Vergl1 = sum1 - sumakt
Vergl1Proz = sumakt * 100 / sum1 - 100
grün = False
End If
If sumakt > sum2 Then
Vergl2 = sumakt - sum2
Vergl2Proz = sumakt * 100 / sum2 - 100
grün = True
Else
Vergl1 = sum2 - sumakt
Vergl2Proz = sumakt * 100 / sum2 - 100
grün = False
End If
Sheets(wksi).Activate
If grün Then
ActiveSheet.Range(Cells(16, 1), Cells(17, 1)).Interior.ColorIndex = 4
Else
ActiveSheet.Range(Cells(16, 1), Cells(17, 1)).Interior.ColorIndex = 3
End If
Cells(16, 1).Value = "Zum Vorjahr tagesaktueller Vergleichswert: " & Round(Vergl1, 0) & " "
Cells(17, 1).Value = "Zum Vorjahr tagesaktueller Prozentabweichung: " & Round(Vergl1Proz, 0) & " _
_
_
End Sub
Ich bekomme da aber bei der sum1 und sum2 immer den Fehler 1004 Anwendungs und Objektorientierter Fehler,
Ich habe es mit Klartext probiert "Sheets(130).Range" ; mit "Sheets(" Name".Range)"
Immer der gleiche Fehler.
Es geht nur wenn ich über sheets(Index).activate gehe und dann dort die
sum1 = WorksheetFunction.Sum(Range(Cells(1, 5), Cells(letzZeil, 5)))
aufrufe.
Das geht dann aber wieder nicht mehr wenn ich die Sub in " Private Sub Worksheet_Activate()"
verschiebe wo sie eigentlich hin soll.
Vielleicht kann von Euch jemand helfen.
Schon mal vielen Dank
Gruss Jochen