vba错误提示400

查看: 1419|回复: 5
VBA 400错误
阅读权限20
在线时间 小时
请哪位过路的大神帮帮忙。不胜感激!
16:31 上传
点击文件名下载附件
12.35 KB, 下载次数: 7
阅读权限20
在线时间 小时
Sub user_click_Province()
& &Sheets(&Map Plotter&).Range(&F2&).Value = ActiveSheet.Range(&C4&)
& &Sheets(&Map Plotter&).Range(&F2&).ClearContents
& &Sheets(&Map Plotter&).Range(&F4:G4&).ClearContents
&&'将当前选择的地图版块名称填值到Mapplotter的省份和城市
& &Sheets(&Map Plotter&).Select
修改了一下,可以运行,但是这个代码有什么作用?
阅读权限20
在线时间 小时
Sub user_click_Province()
谢谢你。这个是大程序的一小段, 但我不理解为这么这种写法就不行呢 Range(&Map Plotter!F2&).Value = ActiveSheet.Range(&C4&),我看到好多代码就是这么写的啊。请赐教!
阅读权限100
在线时间 小时
Range(&Map Plotter!F2&).的写法是错误的。
Sheets(&Map Plotter&).Range(&F2&)
阅读权限100
在线时间 小时
谢谢你。这个是大程序的一小段, 但我不理解为这么这种写法就不行呢 Range(&Map Plotter!F2&).Value = Ac ...
这样写是可以的,但是,前提条件是工作表名称当中不能有空格,否则认不出来
阅读权限20
在线时间 小时
这样写是可以的,但是,前提条件是工作表名称当中不能有空格,否则认不出来
非常感谢!
最新热点 /1
本活动是由微软(中国)有限公司发起,申请通过者可以得到Office 365企业级E3 试用账号,并享有全套Office 365客户端及云端高效、协作办公体验。 机会有限,先到先得!
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师VBA 出现400错误
VBA 出现400错误
没有更多推荐了,查看: 489|回复: 2
录制宏后把代码合并到其他宏里出现错误400,求大神指点
阅读权限20
在线时间 小时
& & & & & & & &
本帖最后由 zxp 于
16:00 编辑
以下是代码的最后部分,其中& & Nrow5 = [C2].CurrentRegion.Rows.Count
& & Range(Cells(2, 7), Cells(2, 9)).Select
& & Selection.AutoFill Destination:=Range(Cells(2, 7), Cells(Nrow5, 9)), Type:=xlFillDefault部分加上后即出错。单独运行没有问题
而且前面的不加 ActiveSheet.也会出现400错误,是什么原因,望大神指点一二。
& &&&ActiveSheet.Range(&G1&).Select
& & ActiveCell.FormulaR1C1 = &首包优良&
& & ActiveSheet.Range(&H1&).Select
& & ActiveCell.FormulaR1C1 = &页面优良&
& & ActiveSheet.Range(&I1&).Select
& & ActiveCell.FormulaR1C1 = &覆盖优良&
& &
& & ActiveSheet.Range(&G2&).Select
& & ActiveCell.FormulaR1C1 = &=RC[-3]/RC[-4]&
& & ActiveSheet.Range(&H2&).Select
& & ActiveCell.FormulaR1C1 = &=RC[-3]/RC[-5]&
& & ActiveSheet.Range(&I2&).Select
& & ActiveCell.FormulaR1C1 = &=RC[-3]/RC[-6]&
& & ActiveSheet.Range(&G2:I2&).Select
& & Selection.Style = &Percent&
& & Selection.NumberFormatLocal = &0.0%&
& &
& & Nrow5 = [C2].CurrentRegion.Rows.Count
& & Range(Cells(2, 7), Cells(2, 9)).Select
& & Selection.AutoFill Destination:=Range(Cells(2, 7), Cells(Nrow5, 9)), Type:=xlFillDefault复制代码
15:54 上传
点击文件名下载附件
33.9 KB, 下载次数: 4
阅读权限20
在线时间 小时
帖子不要沉啊
阅读权限20
在线时间 小时
请大大们帮下忙啊,怎么改才行
最新热点 /1
本活动是由微软(中国)有限公司发起,申请通过者可以得到Office 365企业级E3 试用账号,并享有全套Office 365客户端及云端高效、协作办公体验。 机会有限,先到先得!
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师简谈VBA的错误处理
发表于 11:35|
作者王丽兵
在 Word 、 Excel 乃至其他支持 VBA 的 Office 组件中,在代码中处理错误的方式通常都是使用“ On Error Goto 错误标签”语句,然后在代码的后面添加错误标签及其中包含的错误处理代码。
宋翔,微软全球最有价值专家(MVP),从事多年网络技术服务以及企业信息化管理工作,对Microsoft Office在销售、人力、财务等多方面的应用有比较丰富的经验。主要致力于微软Windows和Office两大系列产品的深入研究与开发,出版过多部Windows和Office方面的书籍。好读书,求甚解,对任何事物喜欢钻研和琢磨。为人谦虚随和,乐于助人,网名&完美&,是多个Windows和Office论坛的版主,并建有自己的个人网站,与读者以及广大电脑爱好者在线交流电脑技术。业余爱好广泛,尤其喜欢不同风格的音乐,擅长唱歌,以欧美流行歌曲为主。
在 Word 、 Excel 乃至其他支持 VBA 的 Office 组件中,在代码中处理错误的方式通常都是使用& On Error Goto 错误标签&语句,然后在代码的后面添加错误标签及其中包含的错误处理代码。下面总结了创建错误处理程序的步骤:
( 1 )在过程中可能导致错误的代码行的前面添加错误处理语句 On Error Goto ErrHandler ,其中的& ErrHandler &为自定义的错误标签名称。
( 2 )在有可能导致错误的代码行后面添加取消错误处理的语句 On Error Goto 0 ,这样当遇到错误时,就不会跳转到指定的错误标签处,而是直接显示错误提示窗口,其中包括【调试】、【结束】等按钮。
( 3 )在宏的末尾(正常程序的末尾)添加代码行 Exit Sub ,这样可以避免程序未发生错误时执行错误处理程序。
( 4 )在代码行 Exit Sub 的下一行添加一个错误标签,该标签由名称和冒号组成,例如& MyErr: &。
( 5 )在错误标签的下一行编写错误处理代码。如果要返回导致错误的代码行后面的代码行,可以使用 Resume Next 语句。
注意:可以在过程的末尾添加多个错误处理程序,但必须确保每个错误处理程序都以 Resume Next 或 Exit Sub 语句结束,这样可以避免从当前错误程序之后继续执行其后的错误处理程序。
举一个简单的例子可能会更直观地反映出上面所说的内容。在下面的代码中,当检测到工作簿中没有指定的工作表时,将出现错误,并执行错误代码,显示一个包含错误号与错误描述的对话框。
Sub 检测工作表是否存在 ()
Dim wksname As String, msg As String
On Error GoTo MyErr
wksName = Worksheets(&sx&).Name
msg = & 错误 & & Err.Number & & : & & Err.Description
MsgBox msg
注意:无论在导致问题的代码行前面使用 On Error Resume Next 语句还是& On Error Goto 标签&语句,要想让程序重新获取其他错误信息,则都必须在导致问题的代码行后面使用 On Error Goto 0 语句恢复正常的错误捕获状态。否则当前的错误处理程序将对后面的所有错误都起作用。例如,下面的代码由于没有使用 On Error Goto 0 语句,因此,在后面遇到错误时(两次 x/y ),都会转到标签 MyErr 处执行错误处理程序。
Sub ErrTest()
Dim x As Integer, y As Integer, z As Single
On Error GoTo MyErr
MsgBox x / y
MsgBox x / y
MsgBox & 继续执行错误代码行的下一行代码 &
MsgBox & 第 1 次:除数不能为 0&
Resume Next
而下面的代码由于及时使用了 On Error Goto 0 语句,因此,在第 2 次错误发生时(即第 2 个 x/y ),系统将显示内置错误消息,而不是运行 MyErr 标签处的代码。
Sub ErrTest()
Dim x As Integer, y As Integer, z As Single
On Error GoTo MyErr
MsgBox x / y
On Error GoTo 0
MsgBox x / y
MsgBox & 继续执行错误代码行的下一行代码 &
MsgBox & 第 1 次:除数不能为 0&
Resume Next
下面的代码虽然未使用 On Error Goto 0 语句,但是在第 2 个错误发生前,添加了第 2 个错误标签,因此,两个错误处理程序分别处理各自的错误。
Sub ErrTest()
Dim x As Integer, y As Integer, z As Single
On Error GoTo MyErr1
MsgBox x / y
On Error GoTo MyErr2
MsgBox x / y
MsgBox & 继续执行错误代码行的下一行代码 &
MsgBox & 第 1 次:除数不能为 0&
Resume Next
MsgBox & 第 2 次:除数不能为 0&
Resume Next
以上 3 段代码在执行完错误处理程序后,都会返回发生错误的代码之后继续执行。对于本例来说,在执行完错误处理程序后,都会继续执行& MsgBox & 继续执行错误代码行的下一行代码 & &代码行。
虽然我们不希望在程序运行时出现错误,但是有些时候我们可以利用错误来提高代码的效率。例如,当用户由于某些原因将工作簿中的某个工作表删除,如果 VBA 程序中中包括操作该工作表的代码,那么当用户运行该程序时,将导致错误发生。此时,可以利用错误来检测要操作的工作表是否存在于工作簿中。代码如下:
Sub 检测工作表是否存在 ()
Dim WksName As String
On Error Resume Next
WksName = Worksheets(&sx&).Name
If Err.Number && 0 Then
MsgBox prompt:=& 此工作簿中未找到工作表 sx&, Title:=& 错误 &
On Error GoTo 0
推荐阅读相关主题:
网友评论有(0)
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章请问VBA达人,以下的语句,哪里错了?运行就报错400,怎么修改?_百度知道
请问VBA达人,以下的语句,哪里错了?运行就报错400,怎么修改?
谢谢啦Range(Cells(MemRow,MemColumn+3),Cells(1,MemColumn)).Columns.AutoFitRange(Cells(MemRow,MemColumn),Cells(MemRow,MemColumn+3)).Select...
谢谢啦Range(Cells(MemRow, MemColumn + 3), Cells(1, MemColumn)).Columns.AutoFitRange(Cells(MemRow, MemColumn), Cells(MemRow, MemColumn + 3)).Select
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
来自电脑网络类芝麻团
采纳数:3185
获赞数:8713
参与团队:
range(cells(),cells()) 这样的形式,cells()如果参数有变量,前面的父对象(也就是表格)省略了有时候会出错!我也不知道为什么,接触了很多年VBA的经验!比如:当前表Range(Cells(1, i), Cells(j, 2)) 改成Range(ActiveSheet.Cells(1, i), ActiveSheet.Cells(j, 2))就不会错了
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 excel vba基础入门 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信