Verwenden von SUM () in VBA

9

Wenn ich in einem Arbeitsblatt eine Gruppe von Zellen habe, die ich zusammenfassen möchte, kann ich die Formel verwenden:

%Vor%

Um dies in einem Sub zu tun, würde ich verwenden:

%Vor%

Wenn ich jedoch eine einzelne Zelle über viele Arbeitsblätter hinweg hinzufügen möchte, verwende ich die Formel:

%Vor%

In VBA schlägt diese Zeile kläglich fehl, wie in Specify a Excel beschrieben Bereich über Blätter in VBA :

%Vor%

Ich habe zwei Problemumgehungen. Ich kann die Summe durch Programmierung einer Schleife:

%Vor%

oder mit Evaluate() :

%Vor%

Ist es möglich, Application.WorksheetFunction.Sum() für diese Berechnung zu verwenden, oder sollte ich die Schleife beibehalten?

    
Gary's Student 27.05.2016, 20:17
quelle

2 Antworten

2

Ich glaube, das Problem mit der Arbeitsblattfunktion.sum besteht darin, dass Argumente benötigt werden, um keine Zeichenfolge auszuwerten. WorksheetFunction.Sum ("Sheet1! A1: A3") schlägt ebenfalls fehl. Dies gelingt jedoch

%Vor%

Die Ranges könnten sein, was immer du willst.

    
mongoose36 13.06.2016, 03:19
quelle
1

Sie müssen die Schleife verwenden, um die Berechnung für alle Blätter durchzuführen. Dies ist der effizienteste Weg nach Aussehen. Wie oben erwähnt, können Sie stattdessen jeden Bereich einzeln eingeben.

Es könnte sich lohnen, den Bereich, den Sie addieren, zu einem Double (oder Single, Integer usw.) zu konvertieren, weil VBA manchmal Zahlen als Text liest.

v = v + Cdbl(Sheets(i).Range("B2"))

Der Grund, warum Probleme mit Application.WorksheetFunction.Sum("Sheet1:Sheet3!B2") auftreten, liegt darin, dass der Bereich 'Sheet1: Sheet3! B2' von Excel nicht erkannt wird, wenn Sie diese Formel in Excel eingeben.

Um Application.WorksheetFunction zu verwenden, muss es in Excel außerhalb von VBA funktionieren.

Ich hoffe, das hilft.

    
Tabias 13.06.2016 07:22
quelle