Avatar billede william_munny Nybegynder
27. juni 2003 - 16:07 Der er 1 løsning

Kald af Funktion I workbook1 fra workbook2

Hvordan kalder man en vba funktion placeret i workbook1 module1, fra workbook2 ?
Der skal overføres et array af user defined type, i funktions kaldet.

vi anvender følgende metoder:

'--------------Workbook1.module1-------------
Public Type myType
    IDName As String * 50
    Data(1) As Double
End Type

Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)

Public Sub TypeData2Array(arrArray() As Byte, typeData As myType)
  ReDim arrArray(0 To Len(typeData)) As Byte
  CopyMemory arrArray(0), typeData, Len(typeData)
End Sub

Private Sub CommandButton1_Click()
 
  Dim test As myType
  test.IDName = "Casper"
  test.Data(0) = 4.1
  test.Data(1) = 4.2
  Dim a() As Byte

  Call TypeData2Array(a, test)

  Application.Run "Book1.xls!Receive", a
   
End sub

'--------------workbook2 module 1-----------
Public Type myType
    IDName As String * 50
    Data(1) As Double
End Type

Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)

Public Sub Array2TypeData(typeData As myType, ByRef arrArray() As Byte)
  CopyMemory typeData, arrArray(0), UBound(arrArray)
End Sub

public sub Receive(rec() as byte)
  Dim q As myType
  Call Array2TypeData(q, rec)
end sub
-----------------------------------------------
resultatet er :
  q.IDName = "Casper"
  q.Data(0) = 4.1
  q.Data(1) = 1.112536e-309 ????

Hvorfor er q.Data(1) ikke 4.1 ?
Hvis Data() dimensioneres 1 element større end nødvendigt(dvs Data(2) i dette tilfælde) da er q.Data(1) = 4.1

Hvad går der galt.. Kan man overhovedet anvende copymemory ?
Avatar billede william_munny Nybegynder
30. juni 2003 - 11:15 #1
Lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester