Enfaite, pour être un petit peu plus complet, lorsque je fais:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| AAddrrOf("Func", n)
Public Function AAddrrOf(strFuncName As String, n As Byte) As LongPtr
If strFuncName = "Func" Then
If n = 1 Then
AAddrrOf = GetAddress(AddressOf Func1)
ElseIf n = 2 Then
AAddrrOf = GetAddress(AddressOf Func2)
ElseIf n = 3 Then
AAddrrOf = GetAddress(AddressOf Func3)
ElseIf n = 4 Then
AAddrrOf = GetAddress(AddressOf Func4)
End If
End If
End Function
Public Function GetAddress(ByRef AddressOf_FunctionName As LongPtr) As LongPtr
GetAddress = AddressOf_FunctionName
End Function
Public Sub Func1()
End Sub
Public Sub Func2()
End Sub
Public Sub Func3()
End Sub
'...etc... |
AAddrrOf("Func", n) me renvoie vers la Fonction :
Public Function AAddrrOf(strFuncName As String, n As Byte) As LongPtr
, j'ai ainsi un LongPtr grâce à AAddrrOf, puis le Select Case me renvoie vers
Public Function GetAddress(ByRef AddressOf_FunctionName As LongPtr) As LongPtr
, puis me renvoie le même nombre (un LongPtr), puis AAddrrOf me renvoie un même chiffre ensuite. Enfaite, ça correspond à l'équivalent d'un AddressOf mais compliqué inutilement ici, en plus il y a un Select Case, donc pas intéressant dutout. J'ai bien donc un LongPtr en guise d'un AddressOf Func1 par exemple, mais je cherche une méthode générale pour les GotO également.
Partager