value()=  vNewValue没有这种直接赋值方式吧

解决方案 »

  1.   

    有一段时间没来答题了,今天来试试Dim value(2) As String'将数组中的字符串连接起来
    Private Function hh(vNewValue() As String) 'As String
      Dim i As Long
      For i = 0 To UBound(vNewValue)
        hh = hh & vNewValue(i) & " "
      Next
      hh = Trim$(hh)
    End Function'将数组中的字符串连接起来,用空格作分隔符
    Private Function hh2(vNewValue() As String) 'As String
      hh2 = Join(vNewValue, " ") 'Join函数本身就是一个以数组为参数的函数例子
    End FunctionPrivate Sub Command1_Click()
      Dim x As String, y As String
      
      value(0) = "I"
      value(1) = "LOVE"
      value(2) = "VB"
      x = hh(value)
      y = hh2(value)
      Text1.Text = x
      Text2.Text = y
    End Sub
      

  2.   

    多谢大家的热情相助,我也了解了不少^_^
    但我还没解决这个问题,真正的问题是:
    我做了一控件,想用vbscript把一外部数组,通过数组oper1,传给控件,还望大家给与指导
    分不够继续加:)Option Explicit
    Dim op1(1, 1) As String
       
    Private Sub Command1_Click()
    Text1.Text = Me.oper1(0, 0)
    End SubPrivate Sub UserControl_Initialize()
       op1(0, 0) = "a"
      Me.oper1(0, 0) = "b"
       Me.oper1(1, 1) = "c"
       Text1.Text = Me.oper1(1, 1)
    End Sub
     
    Public Property Get oper1() As Variant
        oper1 = op1
    End PropertyPublic Property Let oper1(ByRef vNewValue() As Variant)
             '    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~出错,好像是属性过程的参
    '数不能为数组,但我想用vbscript把一外部数组,通过数组oper1  , 传给控件
       op1 = vNewValue
        PropertyChanged "oper1"
    End Property
      

  3.   

    也不知数组变量之间可否相互直接赋值如
    dim a()
    Dim b()
    b=Array(2,8)
    a=b
    ~~~~~~~~不知正确否   
      

  4.   

    to sunjiujiu
    你是指只能单个元素赋值?
      

  5.   

    将数组传递到 DLL 过程中
    可以传递数组中的单个元素,方法与传递同类型的变量相同。在传递单个元素时,元素被作为基本类型的变量进行传递。例如,可以使用 sndPlaySound 过程演奏数组中保存的一系列 .wav 文件:Dim WaveFiles(10) As String
    Dim i As Integer, worked As Integer
       For i = 0 to UBound(WaveFiles)
          worked = sndPlaySound(WaveFiles(i), 0)
       Next i有时需要将整个数组传递到 DLL 过程中。如果 DLL 过程是专门为自动化编写的,那么将数组传递到 DLL 过程的方式与传递到 Visual Basic 过程是相同的:加上空的括号。因为 Visual Basic 使用包括 SAFEARRAY 在内的自动化数据类型,DLL 要得到 Visual Basic 数组参数就必须是能接受自动化的。关于更进一步的信息,请参考特定 DLL 的文档。如果 DLL 过程不能直接接受自动化 SAFEARRAYs,数值数组仍可以整个进行传递:以引用方式传递数组的第一个单元。因为数值数组数据总是按顺序放在内存中,因此这种办法是可行的。只需要将数组的第一个元素传递到 DLL 过程,该 DLL 就能够访问数组的所有单元。作为一个例子,可以考虑如何使用 API 调用设置文本框中的制表位。在多行的(但不能是单行的)文本框控件中可以有内部的制表位:如果文本框中的文本中包含制表符(字符编码为 9),制表符后面的文本将与下一个制表位对齐。可以调用 Windows API 中的 SendMessage 函数设置制表位,为此需要将新的制表位设置保存到一个数组中,并将其传递到 API 过程中。Private Declare Function SendMessageSetTabs Lib _
    "user32" Alias "SendMessageA" (ByVal hwnd As Long, _
    ByVal wMsg As Long, ByVal wParam As Long, _
    lParam As Any) As Long
    Const EM_SETTABSTOPS = &HCBSub ChangeTabs(anyText As TextBox, tabcount As Integer)
    Dim i As Integer
    Dim alngTabs() As Long
    Dim lngRC As Long
    ReDim alngTabs(tabcount - 1)
       For i = 0 To UBound(alngTabs)
          alngTabs(i) = (i + 1) * 96  
          '设置制表位。
       Next i
       '调用时使用 null 指针,指向空的
       '制表位数组。
       lngRC = SendMessageSetTabs(anyText.hwnd, _
       EM_SETTABSTOPS, 0, vbNullString)
       '传递数组中的第一个元素;在内存中,
       '数组中的其它元素依次排列在它的后面。
       lngRC = SendMessageSetTabs(anyText.hwnd, _
       EM_SETTABSTOPS, tabcount, alngTabs(0))
       anyText.Refresh
    End Sub在调用该过程时,需要指定文本框的名字以及需要设置的制表位的个数。如下所示:Private Sub Command1_Click()
       ChangeTabs Text1, 4
    End Sub这种方法也可以用于字符串数组。用 C 语言编写的 DLL 过程将字符串数组作为指向字符串数据的指针的数组,Visual Basic 以同样的方式定义字符串数组。详细信息   关于 SAFEARRAYs 和其它自动化数据类型的详细信息,请参阅 Microsoft Press 出版的《OLE 2 Programmer's Reference》。