value()= vNewValue没有这种直接赋值方式吧
解决方案 »
- SHELL扩展:怎样打开我的电脑?
- 用Microsoft SQLDMO Object Library备份SQL数据库的问题。急!急!急!急!
- Setup Factory6.0 打包问题~
- 水晶报表 中文版哪里有下载
- 如何打印图片
- 怎么样让MDI窗口的中的图片大小根据分辨率的不同进行变化
- VB和SQL-2000的连接问题高分高分高分!!!!并且可以提供源代码!!!
- 如果想生成一些类似柱状图,扇型图的分析图表,并且便于打印。
- 我用Api的FtpGetFile方法怎么有的文件下载部下来,急,急!!
- 如何用Tek示波器保存CSV格式文件到电脑???
- 急!急!急!用什么办法可以模拟RS232C口?
- 我是。。。。。山啊。。。。。呱呱
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
但我还没解决这个问题,真正的问题是:
我做了一控件,想用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
dim a()
Dim b()
b=Array(2,8)
a=b
~~~~~~~~不知正确否
你是指只能单个元素赋值?
可以传递数组中的单个元素,方法与传递同类型的变量相同。在传递单个元素时,元素被作为基本类型的变量进行传递。例如,可以使用 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》。