本文目录
- VB编程:分别求出数组中取得最大值和最小值的元素个数,并在窗体上显示?
- excel数组初始化方法?
- vbafilter函数怎么用?
- 在VB6.0中,使用参数列表时,有一个ParamArray关键字,它是干什么的呀,有什么用?
- 将EXCEL文档导入ACCESS时,出现的这句“下标越界”会造成导入不成功。那是什么意思?该怎么解决?
VB编程:分别求出数组中取得最大值和最小值的元素个数,并在窗体上显示?
Private Sub Form_Click()
Form1.AutoRedraw = True
Dim A()
Dim I As Integer, J As Integer, N As Integer
Dim MinG As Integer, MaxG As Integer
A = Array(0, 0, 3, 4, 12, 11, 34, 34, 34, 34)
For I = 0 To UBound(A) - 1
For J = I To UBound(A)
If A(I) > A(J) Then
N = A(I)
A(I) = A(J)
A(J) = N
End If
Next
Next
MinG = 1
MaxG = 1
For I = 1 To UBound(A) - 1
If A(I) = A(0) Then MinG = MinG + 1
If A(I) = A(UBound(A)) Then MaxG = MaxG + 1
Next
Print "数组为:"
For I = 0 To UBound(A())
Print A(I);
Next
Print "其中最小的元素为:"; A(0); ",个数为:"; MinG
Print "其中最大的元素为:"; A(UBound(A)); ",个数为:"; MaxG
End Sub
已经运行过。
excel数组初始化方法?
您还可以使用利用Evaluate函数和静态数组的速记格式.在下面的代码中,设置varData,其中[]是Evaluate函数的简写,{…}表达式表示静态数组.每行用a分隔;每个字段用a分隔.它可以使您获得与simoco代码相同的最终结果,但语法更接近原始问题:
Sub ArrayShorthand()
Dim varData As Variant
Dim intCounter1 As Integer
Dim intCounter2 As Integer
' set the array
varData = [{1, 2, 3; 4, 5, 6; 7, 8, 9}]
' test
For intCounter1 = 1 To UBound(varData, 1)
For intCounter2 = 1 To UBound(varData, 2)
Debug.Print varData(intCounter1, intCounter2)
Next intCounter2
Next intCounter1
End Sub
vbafilter函数怎么用?
filter英文意思是过滤器。顾名思义,这个函数大致功能就是过滤筛选,它是一个针对于数组的函数。有4个参数,分别是:sourcearray(待筛选数组),match(要查找的字符串),include(布尔值,是否包含匹配项),compare(字符查找对比方式)。下面用一个例子说明用法:
Sub test() Dim arr As Variant, brr As Variant, crr As Variant arr = Array(2, 1, 2, 4, 3, 2) brr = Filter(arr, 2, False) crr = Filter(arr, 2, True) MsgBox "过滤掉匹配项,保留其余项:" & vbCrLf & Join(brr, "_") MsgBox "过滤掉不匹配项,保留匹配项目:" & vbCrLf & Join(crr, "_") End Sub '执行结果分别是: '过滤掉匹配项,保留其余项: '1_4_3 '过滤掉不匹配项,保留匹配项目: '2_2_2
从上面的例子brr数组是从arr数组中过滤掉了2,保留其他非匹配项目组成的一个新数组,crr是从arr中去掉了非匹配项,保留了是2的项组成的新数组。所以filter第三个参数是关键,如果是false就不保留匹配向,是true就只保留匹配项,我们一般用的是像brr那种,crr这种现实中没什么意义,只是用ubound(crr)-lbound(crr)+1>0 这种来确定某个字符在某个数组中是否存在!
在VB6.0中,使用参数列表时,有一个ParamArray关键字,它是干什么的呀,有什么用?
ParamArray 用于过程最后的一个参数,表示该参数是包含任意个数元素的数组(Variant 类型)'ParamArray 不能与 ByVal、ByRef或 Optional 一起使用。Private Sub Command1_Click()Dim d1 As Long, d2 As Longd1 = My1(5, 1, 2) '计算 5*(1+2)d2 = My1(5, 1, 2, 3, 4) '计算 5*(1+2+3+4)End SubPrivate Function My1(a As Long, ParamArray b()) As LongDim S1 As Long, S2 As LongS1 = LBound(b): S2 = UBound(b)For I = S1 To S2My1 = My1 + b(I)NextMy1 = My1 * aEnd Function
将EXCEL文档导入ACCESS时,出现的这句“下标越界”会造成导入不成功。那是什么意思?该怎么解决?
只能在定义的范围内访问数组元素和集合成员。此错误有以下的原因和解决方法:
引用了不存在的数组元素.
下标比可能下标范围大或小,或是在应用程序中这一边的数组没有指定范围。检查数组的声明以确认其上界和下界。若使用的是重新指定范围的数组,应使用 UBound 和 LBound 函数来决定数组访问。如果索引指定为变量,应检查变量名的拼写。
声明数组时没有指定元素的数目。例如,下列的代码就会导致此错误:
Dim MyArray() As Integer
MyArray(8) = 234 ' 导致错误 9。
Visual Basic 并不会将没有指定范围的数组自动设为 0 – 10。相反必须使用 Dim 或 ReDim 来指定数组中元素的数目。
引用了不存在的集合成员。
试着使用 For Each...Next 结构代替指定元素下标。
使用速写形式的下标,结果指定了错误的元素。
例如,当在集合上使用 ! 运算子时,! 自动指定了一个键。例如 object!keyname.value 和 object.item(keyname).value 是一样的。在此例中,集合中如果 keyname 表示一个错误键,错误就会产生。若要改进此错误,在集合对象中使用正确的键名称或索引。
详细信息,可选取有问题的项目,并按下 F1 键。