0
In meinen Fehlerhandler auf der GetCallOrPut = map(legOption)
Zeile fallen. Der übergebene Wert ist = "C". Die Karte wird gerade initialisiert, wenn ich hindurchtrete und ich kann nicht herausfinden, was ich vermisse. Ich habe zwei andere Funktionen, die eine ähnliche Karte verwenden und dort keine Probleme haben. Irgendwelche Gedanken?Fehler beim Verwenden der statischen Map in Excel VBA
Public Function GetCallOrPut(ByVal legOption As String) As String
'Translates C to Call and P to Put in option Structure
Static map As Collection
If map Is Nothing Then
Set map = New Collection
map.Add "C", "Call"
map.Add "P", "Put"
End If
GetCallOrPut = map(legOption)
End Function
Dank! Hatten sie umgekehrt. Ich verwende statische aus Effizienzgründen und es scheint gut zu funktionieren; Sollte ich nicht in der Lage sein, statische zu verwenden? Diese Funktion wird mehrmals von einem Arbeitsblattänderungsereignis ausgeführt, wenn Live-Daten in das Blatt eingespeist werden. – StormsEdge
Wenn es für Sie funktioniert, dann okay, aber wie ich es verstehe, spielt es keine Rolle, wie es in der Sub ist und sobald die Sub beendet wird, wird die Sammlung freigegeben und muss jedes Mal wieder hergestellt werden. So statisch ist nicht notwendig. –
@ScottCraner - Wenn die Variable als 'Static' deklariert ist, wird sie am Ende der Funktion nicht freigegeben. Zumindest sollte es ** nicht ** sein (das ist der ganze Sinn des 'Static'-Schlüsselwortes), und es war nicht in den begrenzten Tests, die ich gemacht habe. – YowE3K