永发信息网

excel VBA 下标越界了 怎么改呢

答案:4  悬赏:20  手机版
解决时间 2021-04-02 16:35
excel VBA 下标越界了 怎么改呢
最佳答案
如果使用数组时,数组的下标超出数组的可取值范围就会出现这个错误,这个数组可以是自定义的也可以是系统自带的。
1.自定义数组:
dim arr1(1 to 5)
arr1(10)=555
因为arr1数组为1到5,这里却是10,所以就会报下标越界错误。
2.系统自带的数组:
一个excel工作表表有3张Sheet
Sub 下标越界()
MsgBox Sheets(4).Name
End Sub
这里的Sheets(4)显然已经超出了3张Sheet,因此也会报下标越界错误。
总之,有多种情况会引起“下标越界”的报错。

下标越界错误大概有以下的原因和解决方法:
  1.引用了不存在的数组元素。
  2.下标比可能下标范围大或小,或是在应用程序中这一边的数组没有指定范围。检查数组的声明以确认其上界和下界。若使用的是重新指定范围的数组,应使用 UBound 和 LBound 函数来决定数组访问。如果索引指定为变量,应检查变量名的拼写。
  3.声明数组时没有指定元素的数目。
  4.引用了不存在的集合成员。 试着使用 For Each...Next 结构代替指定元素下标。
使用速写形式的下标,结果指定了错误的元素。
  5.下标越界不存在对应的工作薄、工作表名称是否写正确。
全部回答
excel各种解决 搞定
Dim ar, cr, br(1 To 1000, 1 To 1000, 1 To 1)这一句已经定义了br(1 To 1000, 1 To 1000, 1 To 1),所以For i=0 to UBound(ar) - 1这一句决定肯定下标越界。要么i不能从0开始,要么br(i, i, 1) = cr(0) & " " & ar(i)这一句要改成br(i+1, i+1, 1) = cr(0) & " " & ar(i)。同时要保证循环结束前不越界可能代码还得调整。

亲,这是我第三遍回答这个问题了。您到底是要“随机”,还是要罗列全部的“组合”?这是两个不同的要求。
下面是罗列全部组合的代码。
Sub test()
Dim ar(), br(), cr()
Dim i, j, k As Long
ar = Array("Shell", "Case", "Cover", "Backcover", "Back Cover", "housing", "Skin", "protection", "protector", "Protective", "Pouch", "Flip", "Holster", "Wallet", "bumper")
br = Array("A", "B")
ReDim cr((UBound(ar) + 1) * (UBound(br) + 1))
For i = 0 To UBound(ar)
    For j = 0 To UBound(br)
        cr(k) = ar(i) & " " & br(j)
        k = k + 1
    Next
Next
Range("A1").Resize(UBound(cr) + 1, 1) = Application.WorksheetFunction.Transpose(cr)
End Sub
追问:嗯,这个代码行的通,但是我要随机组合的,可以吗
追答:可以,后面要加一段代码。相当于先全部列出来,然后再随机排顺序。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
下面对青铜器的叙述,不正确的是 A.青铜器造
在己注销的信用卡转钱能退回来吗
深闺怨夫什么意
LGP705手机怎么样啊,现在市场报价是多少?
人在艳阳中,桃花映面红 是哪首诗
害怕领导怎么办?
如何快速打出嗝来
桓仁土特产批发城地址有知道的么?有点事想过
海盐能直接食用吗
出于本心的词语
2000到3000的笔记本哪种性价比高?
DNF的拉近镜头怎么关闭啊?
掉头发原因 办法
冰雪奇缘游戏攻略冰霜怎么看不到
高一化学 乙醇和甲醚(CH3OCH3)为什么是同分异
推荐资讯
老师你好,我想再问问你如何筛选出来B组中完
oppor9s没有摄像是怎么回事
饱含热泪祈求创业王高手指点
2619等于45.546等于9列出综合式子
PHP构造方法到底有什么用
五更天明皆提醒单数一七好尾局
电木可耐多高温度
三咪服饰在什么地方啊,我要过去处理事情
开车撞了别人,他走了,我也走了,现在车子还
各位鉴定高手,给看一下这个和田玉“龙凤呈祥
一加手机那么火,为什么身边几乎没人用
填空题什么扬起什么四字
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?