爱问知识人 爱问教育 医院库

关于EXCEL VBA中数组下标越界的问题

首页

关于EXCEL VBA中数组下标越界的问题

Set rng = Sheet2.Range("A2:A" & Sheet2.[A65536].End(xlUp).Row + 1)
arr = rng.Value
For i = 1 To UBound(arr) - 1 Step 2
If Left(arr(i + 1), 3) = Left(arr(i), 3) Then
……
运行的时候提示if那一行下标越界,怎么解决这个问题?

提交回答
好评回答
  • 2011-03-18 14:04:58
    Set rng = Sheet2.Range("A2:A" & Sheet2.[A65536].End(xlUp).Row + 1)
    arr = rng.Value 
    采用单元格区域直接赋值给数组的时候,并不像数组公式里那样,单行或者单列的单元格区域返回一维的水平或者垂直数组,而是像工作表行列分布一样的二维数组。
    因此引用数组里的值时,必须使用二维引用的方式,即arr(i)是错误的,必须使用arr(i,1)的格式。

    1***

    2011-03-18 14:04:58

其他答案

    2011-03-18 07:52:30
  • 把If Left(arr(i + 1), 3) = Left(arr(i), 3) Then 这一句改为
    If Left(arr(i + 1, 1), 3) = Left(arr(i, 1), 3) Then即可,因为按前面的语句形成的arr数组是二维数组。

    1***

    2011-03-18 07:52:30

类似问题

换一换
  • 办公软件 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):