Hallo zusammen,
ich arbeite gerade daran eine handvoll UDFs aus Excel-vba mit Hilfe von VB.net in Excel-DNA addins umzuwandeln. Alle Funktionen konnten in vba fehlerfrei ausgeführt werden. Das soll hier nicht weiter thematisiert werden.
Das hier zu diskutierende Problem soll anhand folgender Funktion gezeigt werden:
Der Funktion werden verschiedene Werte übergeben, dazu gehören auch zwei Arrays (RngComponents, RngCompositions) deren Übergabe allerdings optional sein soll.
Zuerst hatte ich versucht die Funktion wie folgt aufzurufen:
Hier wird mir Fehlercode BC30812 "Optional parameters must specify a default value." angezeigt.
Durch verschiedene Foreneinträge bin ich dann bei folgender Darstellung gelandet:
Die Funktion kann damit ausgeführt werden, allerdings wird, im Fall dass kein Array übergeben wird, das in folgender Abfrage nicht erkannt:
Es ist aber essentiell, dass im Fall, dass kein Array übergeben wird die Variable M_air mit dem angegebenen Wert belegt wird.
Schaue ich mir das Array im debugging an, ist {Length=1} und der Wert wird Stelle (0) mit {Excel.Integration.ExcelMissing} angegeben.
Anpassen der If-Abrage wie folgt hat keine Verbesserung gebracht:
Im Fall, dass belegte Arrays übergeben werden läuft die Funktion übrigens fehlerfrei und liefert das gewünschte Ergebnis.
Ich hoffe, dass ich das Problem verständlich beschreiben konnte. Gibt es irgendwelche Lösungsvorschläge von eurer Seite?
MFG
Josen
Verschoben. ~Trade
ich arbeite gerade daran eine handvoll UDFs aus Excel-vba mit Hilfe von VB.net in Excel-DNA addins umzuwandeln. Alle Funktionen konnten in vba fehlerfrei ausgeführt werden. Das soll hier nicht weiter thematisiert werden.
Das hier zu diskutierende Problem soll anhand folgender Funktion gezeigt werden:
VB.NET-Quellcode
- Function GasHumid_phi(ByVal T As Double, ByVal p As Double, ByVal Y As Double, Optional ByVal RngComponents As Object() = Nothing, Optional ByVal RngComposition As Object() = Nothing) As Double
- Dim pi As Double
- Dim M_H2O, M_air As Double
- If RngComponents(0) Is Nothing Then
- M_air = 0.0289583
- Else
- M_air = Gas_M(RngComponents, RngComposition) / 1000
- End If
- M_H2O = 0.01801528
- pi = Y / 1000 * M_air / M_H2O * p / (1 + Y / 1000 * M_air / M_H2O)
- GasHumid_phi = pi / Water_ps(T)
- End Function
Der Funktion werden verschiedene Werte übergeben, dazu gehören auch zwei Arrays (RngComponents, RngCompositions) deren Übergabe allerdings optional sein soll.
Zuerst hatte ich versucht die Funktion wie folgt aufzurufen:
Hier wird mir Fehlercode BC30812 "Optional parameters must specify a default value." angezeigt.
Durch verschiedene Foreneinträge bin ich dann bei folgender Darstellung gelandet:
Die Funktion kann damit ausgeführt werden, allerdings wird, im Fall dass kein Array übergeben wird, das in folgender Abfrage nicht erkannt:
Es ist aber essentiell, dass im Fall, dass kein Array übergeben wird die Variable M_air mit dem angegebenen Wert belegt wird.
Schaue ich mir das Array im debugging an, ist {Length=1} und der Wert wird Stelle (0) mit {Excel.Integration.ExcelMissing} angegeben.
Anpassen der If-Abrage wie folgt hat keine Verbesserung gebracht:
Im Fall, dass belegte Arrays übergeben werden läuft die Funktion übrigens fehlerfrei und liefert das gewünschte Ergebnis.
Ich hoffe, dass ich das Problem verständlich beschreiben konnte. Gibt es irgendwelche Lösungsvorschläge von eurer Seite?
MFG
Josen
Verschoben. ~Trade
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Trade“ ()