3
En d'autres termes, dois-je le libérer avec Marshal.ReleaseComObject()
? Je sais Range
est et il doit être libéré mais je ne suis pas sûr de la Formula
.Est-ce que `Range.Formula` est un objet COM?
En d'autres termes, dois-je le libérer avec Marshal.ReleaseComObject()
? Je sais Range
est et il doit être libéré mais je ne suis pas sûr de la Formula
.Est-ce que `Range.Formula` est un objet COM?
Dans le modèle objet Excel Formula
est une chaîne, pas un objet.
Un simple test dans Excel VBA:
Sub test()
Dim R As Variant
Set R = Range("A1")
Debug.Print TypeName(R)
Debug.Print TypeName(R.Formula)
End Sub
Il imprime:
Range
String
merci. Je suppose que j'étais confus parce que dans l'addin exprime le type de valeur retourné est Object et dans le navigateur d'objet VBA le type est Variant. Est-il possible qu'il montre comme chaîne dans le VBA mais est enveloppé dans un objet dans l'inter op? – Mr1159pm
@ Mr1159pm Je ne sais vraiment pas quel type d'emballage a lieu lorsque vous utilisez interop. Si les chaînes dot net sont un objet d'une manière telle que les chaînes VBA ne le sont pas, vous avez probablement raison de penser que quelque chose comme ça continue, mais même si je ne pense pas que la propriété formula est une sorte d'objet séparé être garbage-collecté lorsque l'objet range parent est libéré. –