| 网站首页 | 业界新闻 | 群组 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 500 人关注过本帖
标题:请问如何解决我下面这个程序的下标越界
只看楼主 收藏
cdhilite
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2018-1-20
结帖率:50%
  已结贴   问题点数:20  回复次数:8   
请问如何解决我下面这个程序的下标越界
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
2018-01-20 11:20
cdhilite
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2018-1-20
  得分:0 
各位大侠帮帮忙吧!
2018-01-22 14:02
HVB6
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:7
帖 子:272
专家分:416
注 册:2013-10-30
  得分:7 
回复 2楼 cdhilite
您的问题:
1、是VBA的问题;
2、有个简单的附件就容易解决。
2018-01-23 10:03
cdhilite
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2018-1-20
  得分:0 
回复 3楼 HVB6
请问什么附件,能提供给我吗?谢谢
2018-01-24 10:33
suzhanpeng
Rank: 3Rank: 3
等 级:论坛游侠
威 望:4
帖 子:45
专家分:168
注 册:2016-9-28
  得分:7 
醉了,3楼是说让你提供一下源文件, 你提供的那些源代码很难判断出问题所在。
2018-01-24 15:19
cdhilite
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2018-1-20
  得分:0 
不好意思。源文件在这
附件: 您没有浏览附件的权限,请 登录注册
2018-01-25 10:04
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:206
帖 子:4185
专家分:25726
注 册:2008-10-15
  得分:7 
发现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)



授人于鱼,不如授人于渔
早已停用QQ了
2018-01-25 10:31
cdhilite
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2018-1-20
  得分:0 
非常感谢!!
2018-01-25 10:51
cdhilite
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2018-1-20
  得分:0 
各位大侠您好!请问我里面如果"订单"的编号在“合同设备”表里面已经有了,我想在“合同设备”里覆盖新的数据怎么编写VBA?谢谢!

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

附件: 您没有浏览附件的权限,请 登录注册
2018-02-01 14:20







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.060769 second(s), 9 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved