Tout a fait possible, avec le mot clé "AdressOf", voici un exemple qui permet de creer un timer (plus précis que celui de VB mais plus critique) :
' dans un module
' l'api
Public Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
' Notre fonction callback, nous utiliserons adressof pour le paramettre lpTimerFunc de l'api (pointeur sur fonction)
Public Sub TimerProc(ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)
' mettre son code
end sub
' dans le form
Private sub Form_Load()
' On utilise un pointeur sur fonction en 4 eme paramettre pour l'API
SetTimer Me.hwnd, 0, 1000, AddressOf TimerProc
End sub
Si tu veux utiliser des pointeurs tout court, tu peux utiliser VarPtr, StrPtr et ObjPtr. J'ai trouvé une petite finte pour les utiliser qui consiste a copier le contenu du pointeur vers une variable avec "RtlMoveMemory" (plus connu sous le nom de CopyMemory).