Gestern hat mir Hajo schon bei einem ähnlichen Problem geholfen.
Aktueller SAchverkhalt:
1. die UDF berechnet mir in der Tabelle abc.xls den richtigen Wert.
2. abc.xls beibt offen; ich öffne zusätzlich Tabelle def.xls und trage dort einen Wert ein (Berechnung wird automatisch aktualisiert)
3. ich kehre zurück in abc.xls; dort wo mir vorhin die UDF den richtigen Wert geliefert hat, steht jetzt als Ergebnis #WERT (nach dem Aktualsieren erhalte ich wieder das richtige Ergebnis).
Was muss ich bei meiner
Function SummeWennTabellen anpassen, dass keine Wertanpassung erfolgt, wenn eine andere Datei _
aktiv ist? Mein Egänzung mit With ThisWorkbook : ...... End With haben nicht das gewünschte Ergebnis ergeben.
Gruss, Peter
Function SummeWennTabellen(Tab1 As String, _
Tab2 As String, _
Bereich As Range, _
Suchkriterium As String, _
Optional Summe_Bereich As Range) As Double
'Funktion zur Anwendung von SUMMEWENN() über mehrere Tabellenblätter
'Mit angegeben werden die Tabellenblattnamen von...bis,
'sowie die üblichen Parameter für SUMMEWENN()
'Zur automatischen Aktualisierung im Tabellenblatt den folgenden Term
'anhängen: +(0*JETZT()) und F9 drücken um zu aktualisieren
'Also z.B. wie folgt: SummeWennTabellen("Tab1";"Tab8";A1:A10;A1;B1:B10)+(0*JETZT())
Dim intI As Integer
Dim intJ As Integer
Dim intTab As Integer
Dim Summe As Double
With ThisWorkbook
If Suchkriterium = "" Then
SummeWennTabellen = 0
Exit Function
End If
If Summe_Bereich Is Nothing Then Set Summe_Bereich = Bereich
intI = .Worksheets(Tab1).Index
intJ = .Worksheets(Tab2).Index
For intTab = intI To intJ
Set Bereich = .Worksheets(intTab) _
.Range(Bereich.Address)
Set Summe_Bereich = .Worksheets(intTab). _
Range(Summe_Bereich.Address)
Summe = Summe + Application.WorksheetFunction.SumIf _
(Bereich, Suchkriterium, Summe_Bereich)
Next intTab
SummeWennTabellen = Summe
End With
End Function