注册 登录
编程论坛 VB6论坛

请问如何解决我下面这个程序的下标越界

cdhilite 发布于 2018-01-20 11:20, 3551 次点击
Sub 查询()
Dim rg As Range, i%, j%

Application.ScreenUpdating = False
If IsNumeric([b1]) = False Then MsgBox "单号错误": Exit Sub
Set rg = Sheets("合同配置").Columns(1).Find([b1], , , 1)
If rg Is Nothing Then MsgBox "单号格式不正确或查询不到单号数据!": Exit Sub

With Sheets("合同配置")
    i = .Columns(1).Find([b1], searchdirection:=xlNext).Row
    arr = .Range("a" & i & ":w" & i)
        [E1] = arr(1, 2) '客户单位
        [b2] = arr(1, 3) '项目地址
        [E2] = arr(1, 4) '产品类型
        [B3] = arr(1, 5) '安装方式
        [E3] = arr(1, 6) '交付日期
        [B4] = arr(1, 7) '质保方式
        [E4] = arr(1, 8) '质保期限
        [B5] = arr(1, 9) '包装运输
        [E5] = arr(1, 10) '销售人员
        [B6] = arr(1, 12) '单元规格
        [E6] = arr(1, 13) '单元品牌
        [B7] = arr(1, 14) '单元排列
        [E7] = arr(1, 15) '单元数量
        [B8] = arr(1, 16) '安装位置
        [E8] = arr(1, 17) '单元价格
        [A10] = arr(1, 18) '设备名称
        [B10] = arr(1, 19) '设备品牌
        [C10] = arr(1, 20) '设备型号
        [D10] = arr(1, 21) '设备数量
        [E10] = arr(1, 22) '设备单价
        [A11] = arr(1, 23) '设备名称
        [B11] = arr(1, 24) '设备品牌
        [C11] = arr(1, 25) '设备型号
        [D11] = arr(1, 26) '设备数量
        [E11] = arr(1, 27) '设备单价
        [A10] = arr(1, 28) '设备名称
        [B10] = arr(1, 29) '设备品牌
        [C10] = arr(1, 30) '设备型号
        [D10] = arr(1, 31) '设备数量
        [E10] = arr(1, 32) '设备单价
        [A11] = arr(1, 33) '设备名称
        [B11] = arr(1, 34) '设备品牌
        [C11] = arr(1, 35) '设备型号
        [D11] = arr(1, 36) '设备数量
        [E11] = arr(1, 37) '设备单价
        [A12] = arr(1, 38) '设备名称
        [B12] = arr(1, 39) '设备品牌
        [C12] = arr(1, 40) '设备型号
        [D12] = arr(1, 41) '设备数量
        [E12] = arr(1, 42) '设备单价
        [A13] = arr(1, 43) '设备名称
        [B13] = arr(1, 44) '设备品牌
        [C13] = arr(1, 45) '设备型号
        [D13] = arr(1, 46) '设备数量
        [E13] = arr(1, 47) '设备单价
        [A14] = arr(1, 48) '设备名称
        [B14] = arr(1, 49) '设备品牌
        [C14] = arr(1, 50) '设备型号
        [D14] = arr(1, 51) '设备数量
        [E14] = arr(1, 52) '设备单价
        [A15] = arr(1, 53) '设备名称
        [B15] = arr(1, 54) '设备品牌
        [C15] = arr(1, 55) '设备型号
        [D15] = arr(1, 56) '设备数量
        [E15] = arr(1, 57) '设备单价
        [A16] = arr(1, 58) '设备名称
        [B16] = arr(1, 59) '设备品牌
        [C16] = arr(1, 60) '设备型号
        [D16] = arr(1, 61) '设备数量
        [E16] = arr(1, 62) '设备单价
        [A17] = arr(1, 63) '设备名称
        [B17] = arr(1, 64) '设备品牌
        [C17] = arr(1, 65) '设备型号
        [D17] = arr(1, 66) '设备数量
        [E17] = arr(1, 67) '设备单价
        [A18] = arr(1, 68) '设备名称
        [B18] = arr(1, 69) '设备品牌
        [C18] = arr(1, 70) '设备型号
        [D18] = arr(1, 71) '设备数量
        [E18] = arr(1, 72) '设备单价
        [A19] = arr(1, 73) '设备名称
        [B19] = arr(1, 74) '设备品牌
        [C19] = arr(1, 75) '设备型号
        [D19] = arr(1, 76) '设备数量
        [E19] = arr(1, 77) '设备单价


        
        
End With
Application.ScreenUpdating = True
End Sub
8 回复
#2
cdhilite2018-01-22 14:02
各位大侠帮帮忙吧!
#3
HVB62018-01-23 10:03
回复 2楼 cdhilite
您的问题:
1、是VBA的问题;
2、有个简单的附件就容易解决。
#4
cdhilite2018-01-24 10:33
回复 3楼 HVB6
请问什么附件,能提供给我吗?谢谢
#5
suzhanpeng2018-01-24 15:19
醉了,3楼是说让你提供一下源文件, 你提供的那些源代码很难判断出问题所在。
#6
cdhilite2018-01-25 10:04
不好意思。
只有本站会员才能查看附件,请 登录
源文件在这
#7
风吹过b2018-01-25 10:31
发现2个问题。
1、生成订单 工作表
合同号的单元格式是 自定义模式,"H"yy-mm-dd
你代码里判断:
If IsNumeric([b1]) = False Then MsgBox "单号错误": Exit Sub
啥意思!

同样,合同配置 工作表
合同配置 单元格格式,也是自定义,

2、下标越界,
你生成数组的代码是怎样的?
With Sheets("合同配置")         '指定工作表
    i = .Columns(1).Find([b1], searchdirection:=xlNext).Row      
    arr = .Range("a" & i & ":w" & i)  '这行的从A列到W列,一共是 23列,
你再使用下去,自然会下标越界了。
你对着代码里的注释,        [E19] = arr(1, 77) '设备单价12
设备单价12,对应是哪一列? by 列了。
修改:
   arr = .Range("a" & i & ":by" & i)


#8
cdhilite2018-01-25 10:51
非常感谢!!
#9
cdhilite2018-02-01 14:20
各位大侠您好!请问我
只有本站会员才能查看附件,请 登录
里面如果"订单"的编号在“合同设备”表里面已经有了,我想在“合同设备”里覆盖新的数据怎么编写VBA?谢谢!

[此贴子已经被作者于2018-2-2 09:01编辑过]

1