VBA, как заменить "Как-нибудь" в функции - PullRequest
0 голосов
/ 05 октября 2018

У меня есть dll, которая использует эту подпись:

SFetch(cursor As Integer, pstruct As Any, size As Integer) As Integer

Я могу вызвать ее с помощью простых переменных, таких как Integer или более сложных, с пользовательскими типами.

Я хочу создать функцию, которая получит параметр и отправит его в dll, я пробовал разные решения, но всегда есть ошибки.

Во всех случаях я так и назвал:

Dim val As Integer
...
.ExecuteRead val, LenB(val)

Public Sub ExecuteRead(ByVal pstruct, structSize As Integer)
        SFetch1 c, pstruct, structSize

Возвращено Null вместо значения


Public Sub ExecuteRead(pstruct, structSize As Integer)
        SFetch1 c, pstruct, structSize

Возвращено Variable uses an Automation type not supported in Visual Basic


Public Sub ExecuteRead(pstruct As Variant, structSize As Integer)
        SFetch1 c, pstruct, structSize

Возвращено Variable uses an Automation type not supported in Visual Basic


Public Sub ExecuteRead(pstruct As Object, structSize As Integer)
        SFetch1 c, pstruct, structSize

Невозможно вызвать функцию ByRef argument type mismatch


Public Sub ExecuteRead(pstruct As Any, structSize As Integer)

Даже не скомпилируется, Syntax error

1 Ответ

0 голосов
/ 12 ноября 2018

Просто понял, что у меня нет официального ответа, поэтому он есть.

Это объявление функции, включая вызов моей внешней функции:

Public Sub ExecuteRead(ByVal pstruct As LongPtr, structSize As Integer)
    SFetch1 dataCur, ByVal pstruct, structSize

Естькак я это называю из моей основной программы:

obj.ExecuteRead VarPtr(returnGrp), LenB(returnGrp)
...