rRegion.Address usw.
03.10.2009 21:00:16
Erich
Hi Mike,
hier zwei Möglichkeiten, die hoffentlich dasselbe Ergebnis bringen:
Function SumProd(sRegion As String, sKonzern As String, sStatus As String)
SumProd = Evaluate("=SUMPRODUCT(('Wartungen HE09'!D5:D8000=""" & sRegion & """)" & _
" * ('Wartungen HE09'!B5:B8000" & "=""" & sKonzern & """)" & _
" * ('Wartungen HE09'!I5:I8000=""" & sStatus & """))")
End Function
Function SumProdR(sRegion As String, sKonzern As String, sStatus As String)
Dim rRegion As Range, strReg As String
Dim rKonzern As Range, strKon As String
Dim rStatus As Range, strSta As String
With ActiveWorkbook.Worksheets("Wartungen HE09")
Set rRegion = .Range("D5:D8000")
Set rKonzern = .Range("B5:B8000")
Set rStatus = .Range("I5:I8000")
strReg = "'" & .Name & "'!" & rRegion.Address(0, 0)
strKon = "'" & .Name & "'!" & rKonzern.Address(0, 0)
strSta = "'" & .Name & "'!" & rStatus.Address(0, 0)
End With
SumProdR = Evaluate("=SUMPRODUCT((" & strReg & "=" & sRegion & ") * (" & _
strKon & "=" & sKonzern & ") * (" & _
strSta & "=" & sStatus & "))")
End Function
Bei deinem Ansatz mit "...((" & rRegion & " = " & ... wird versucht,
den Inhalt der Variablen rRegion als Text mit den Texten davor und dahi8nter zu verketten.
Das geht nicht - rRegion ist ein Range und besteht aus vielen Zellen, da kann nicht einfach Value
als Standardeigenschaft verwendet werden wie bei einer einzelnen Zelle.
Evaluate kann man sich so vorstellen, dass Excel mit einer Zeichenkette (in Gänsefüßen) aufgerufen wird
mit dem Auftrag, diese Zeichenkette auszuwerten.
Der Ausdruck, den Excel hier bekommen soll, ist eine SUMMENPRODUKT-Formel, in der stehen Bereiche
nicht als Objekte, sondern mit ihren Adressen (z. B. A1:A15).
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort