Hi Lihonggen and guys : 
I need your strong support! Thanks in ahead ! 
When I compile and make .exe file , it always shows a window error "Type mismatch : array or user defined type expected" 
##################################################### 
第一步: 
以下为我在模块module中声明的16个动态数组,分别代表了我们测试机的16个测试site。数组元素类型为Long型 
Public CurrentSite1() As Long, CurrentSite2() As Long, CurrentSite3() As Long, CurrentSite4() As Long 
Public CurrentSite5() As Long, CurrentSite6() As Long, CurrentSite7() As Long, CurrentSite8() As Long 
Public CurrentSite9() As Long, CurrentSite10() As Long, CurrentSite11() As Long, CurrentSite12() As Long 
Public CurrentSite13() As Long, CurrentSite14() As Long, CurrentSite15() As Long, CurrentSite16() As Long 第二步: 
对16个数组初始化: 
  ReDim CurrentSite1(1 To 2, 1 To BinCounter(1)): ReDim CurrentSite2(1 To 2, 1 To BinCounter(2)) 
  ReDim CurrentSite3(1 To 2, 1 To BinCounter(3)): ReDim CurrentSite4(1 To 2, 1 To BinCounter(4)) 
  ReDim CurrentSite5(1 To 2, 1 To BinCounter(5)): ReDim CurrentSite6(1 To 2, 1 To BinCounter(6)) 
  ReDim CurrentSite7(1 To 2, 1 To BinCounter(7)): ReDim CurrentSite8(1 To 2, 1 To BinCounter(8)) 
  ReDim CurrentSite9(1 To 2, 1 To BinCounter(9)): ReDim CurrentSite10(1 To 2, 1 To BinCounter(10)) 
  ReDim CurrentSite11(1 To 2, 1 To BinCounter(11)): ReDim CurrentSite12(1 To 2, 1 To BinCounter(12)) 
  ReDim CurrentSite13(1 To 2, 1 To BinCounter(13)): ReDim CurrentSite14(1 To 2, 1 To BinCounter(14)) 
  ReDim CurrentSite15(1 To 2, 1 To BinCounter(15)): ReDim CurrentSite16(1 To 2, 1 To BinCounter(16)) 
  CurrentSite1(1, 1) = 1: CurrentSite1(2, 1) = 0: CurrentSite2(1, 1) = 1: CurrentSite2(2, 1) = 0 
  CurrentSite3(1, 1) = 1: CurrentSite3(2, 1) = 0: CurrentSite4(1, 1) = 1: CurrentSite4(2, 1) = 0 
  CurrentSite5(1, 1) = 1: CurrentSite5(2, 1) = 0: CurrentSite6(1, 1) = 1: CurrentSite6(2, 1) = 0 
  CurrentSite7(1, 1) = 1: CurrentSite7(2, 1) = 0: CurrentSite8(1, 1) = 1: CurrentSite8(2, 1) = 0 
  CurrentSite9(1, 1) = 1: CurrentSite9(2, 1) = 0: CurrentSite10(1, 1) = 1: CurrentSite10(2, 1) = 0 
  CurrentSite11(1, 1) = 1: CurrentSite11(2, 1) = 0: CurrentSite12(1, 1) = 1: CurrentSite12(2, 1) = 0 
  CurrentSite13(1, 1) = 1: CurrentSite13(2, 1) = 0: CurrentSite14(1, 1) = 1: CurrentSite14(2, 1) = 0 
  CurrentSite15(1, 1) = 1: CurrentSite15(2, 1) = 0: CurrentSite16(1, 1) = 1: CurrentSite16(2, 1) = 0 第三步:我声明了CS()数组来存储这些数组,使得数组的元素是数组 同时,我生明了如下的一个动态数组 CS(),用来存储上面16个数组【数组CS()的元素还是数组,不知道CS()的元素类型是什么?】 
Public CS() As Variant 
注释:因为没法判断数组CS()的元素的数据类型是什么,我的本意就想用变体variant来声明。 
接着,我在我的初始化函数中做了如下初始化: 
ReDim CS(1 To 16) 
CS(1) = CurrentSite1: CS(2) = CurrentSite2: CS(3) = CurrentSite3: CS(4) = CurrentSite4: CS(5) = CurrentSite5: CS(6) = CurrentSite6: CS(7) = CurrentSite7: CS(8) = CurrentSite8 
CS(9) = CurrentSite9: CS(10) = CurrentSite10: CS(11) = CurrentSite11: CS(12) = CurrentSite12: CS(13) = CurrentSite13: CS(14) = CurrentSite14: CS(15) = CurrentSite15: CS(16) = CurrentSite16 然后,我在dll文件里写了一个函数 
Public Function UpdateArrayWhenTestComplete(ByRef CurrentSite() As Long, ByVal SoftBin As Long, ByRef IsSortIn As Boolean) 然后我在调用时: Call UpdateArrayWhenTestComplete(CS(1), 8, True) 编译告诉我CS(1)类型不匹配?为什么?高手帮我解决一下问题吧?万分感谢了! 但如果我写成    Call UpdateArrayWhenTestComplete(CurrentSite1, 8, True)  编译就通过,为什么呢? CS(1)不就是 CurrentSite1吗????? 

解决方案 »

  1.   

    改成:Public CS() As Object 试一下看行不行。
    如果不行改成:Public CS() As String,然后CS(1)="CurrentSite1"...,然后再用CallByName函数试试行不行?  
      

  2.   

    改成:Public CS() As Object 试一下看行不行。
    如果不行改成:Public CS() As String,然后CS(1)="CurrentSite1"...,然后再用CallByName函数试试行不行?  
      

  3.   

    重复 http://topic.csdn.net/u/20090115/21/12fe732b-6e6b-44c2-9c2a-91656849c2e5.html
    已回复