Wert auf .Function mit VBA setzen

8

Ich habe derzeit eine Funktion eingerichtet, die alle Werte einer ausgewählten Pivot-Tabelle als Durchschnittswert ändert.

Es funktioniert gut, und ich habe ein Formular zusammengestellt, das einen Wert übergibt, der auch gut funktioniert.

Was ich an dieser Stelle tun möchte, ist, dass es so entscheidet, auf was es die Werte richtet.

Ich bekomme jedoch immer einen Type-Mismatch Fehler. Dies liegt daran, dass es als String gelesen wird. Wie könnte ich das anpassen?

%Vor%     
Brad 06.02.2017, 14:16
quelle

3 Antworten

3

Natürlich wird der Name einer Variablen zur Kompilierzeit, wie zum Beispiel xlAverage , nicht notwendigerweise der Laufzeit zugeordnet, wo sie einfach eine ganze Zahl ist. Nach der Kompilierung sind die Namen der Konstanten verschwunden.

Es gibt viele Möglichkeiten, aber sie könnten von der komplizierten Verwendung von Typ-Bibliotheken ausgehen, die außerdem nicht auf allen Plattformen verfügbar sind, zu der relativ einfachen Lösung I vorschlagen unten, die ein Wörterbuch verwendet, um die Zuordnungen zwischen den Namen der Konstanten und ihren Werten zu verfolgen.

%Vor%

Übrigens müssen Sie bei dieser Methode nicht dieselben Namen wie die Variablen abbilden. Sie können alle Namen frei benennen, die Sie im Listenfeld anzeigen möchten. d.h. "Mimimum", "Standard Deviation", etc..

p.s.

Bitte beachten Sie, dass Sie einige Tippfehler in den Namen hatten:

CountNumbers - & gt; CountNums

StdDev - & gt; StDev

StdDevp - & gt; StDevP

    
A.S.H 06.02.2017, 15:59
quelle
0

Ihr Versuch funktioniert nicht, weil Sie die konstanten Werte übergeben müssen, keine Zeichenfolgen. xlSum zum Beispiel ist -4157. Sie können herausfinden, was jeder ist wie folgt:

%Vor%

Dies sollte für Sie funktionieren:

%Vor%     
Jiminy Cricket 06.02.2017 15:07
quelle
0

Sie könnten eine Funktion erstellen, um den Wert der Namen zurückzugeben, wie:

%Vor%

Die Änderungszuweisung:

%Vor%     
Gordon Bell 06.02.2017 17:03
quelle

Tags und Links