ubound函数判断数组为空

生活经验024

本文目录

ubound函数判断数组为空,第1张

  1. VB编程:分别求出数组中取得最大值和最小值的元素个数,并在窗体上显示?
  2. excel数组初始化方法?
  3. vbafilter函数怎么用?
  4. 在VB6.0中,使用参数列表时,有一个ParamArray关键字,它是干什么的呀,有什么用?
  5. 将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

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 键。