Uaktualniłem klasę z VB6 na VB.NET do użycia w Excelu przez COM.Odpowiednik VB.NET elementu atrybutu VB6. VB_UserMemId = 0
w VB6, mam właściwość określona w klasie MyScalars
jak to:
Public Property Get Item(vntIndexKey As Variant) As MyScalar
Attribute Item.VB_UserMemId = 0
Set Item = mCol(vntIndexKey)
...
End Property
Wydaje się to zrobić to tak, że w Excel VBA, można uzyskać dostęp do tej właściwości bez podawania go (tak jak właściwości domyślnej):
Dim oOut As Object
Set oOut = MyScalars(Range("E10").Value)
Czy istnieje równoważny atrybut w VB.NET, który to robi? Próbowałem następujące, ale daje błąd w VBA:
Default Public ReadOnly Property Item(ByVal vntIndexKey As String) As MyScalar
Get
If mCol.ContainsKey(vntIndexKey) Then
Item = mCol.Item(vntIndexKey)
End If
...
End Property
Jakiego błędu dostałeś w VBA? Możesz także wypróbować nieruchomość z "Set", która nie jest ReadOnly. – Govert
@Kwota błędu 450: niepoprawna liczba argumentów lub nieprawidłowe przypisanie właściwości. Jeśli wykonuję 'MyScalars.Item (Range (" E10 "). Value)' działa dobrze, jestem po prostu ciekawy, czy domyślna właściwość jest możliwa. – ryrich
Również określenie "Ustaw" daje taki sam wynik. – ryrich