Excel精英培训网

 找回密码
 注册

QQ登录

只需一步,快速开始

工作中常用的Excel函数公式,全印在一张超大鼠标垫上
查看: 163|回复: 6

[已解决]求教:对话框报错容错处理

[复制链接]
发表于 2021-11-24 15:38 | 显示全部楼层 |阅读模式
  1. Sub aa()
  2. rng = Application.InputBox(Prompt:="选择范围", Title:="鼠标拖动选择", Type:=8).Address
  3. MsgBox rng
  4. End Sub
复制代码
对话框空着,点确认按钮会报错,这个容错的处理怎么写啊,求各位大神赐教了
最佳答案
2021-11-24 19:37
Sub aa()
On Error Resume Next
Dim rng
Application.DisplayAlerts = False
100:
rng = Application.InputBox("选择范围", "鼠标拖动选择", "A1000", Type:=8).Address
If rng = "$A$1000" Then
    MsgBox "请输入单元格地址再操作!必须选择一个非A1000单元格才能关闭"
    GoTo 100
Else
    If rng = "" Then
    MsgBox "请输入单元格地址再操作!必须选择一个A1000单元格才能关闭"
    GoTo 100
    End If
    MsgBox rng
    Application.DisplayAlerts = True
End If
End Sub

这个就能解决了之前的问题,添加一个默认值第三个参数,不过你输出的rng的地址格式,但是你选择的过程又不是地址格式或者是空值它都是与你定义的类型相违背的,整体来说,不同类型去对比是没有意义一样。

屏幕截图 2021-11-24 153519.png
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2021-11-24 17:09 | 显示全部楼层
本帖最后由 林木水 于 2021-11-24 17:14 编辑

Sub aa()
dim rng
rng = Application.InputBox(Prompt:="选择范围", Title:="鼠标拖动选择", Type:=8).Address
MsgBox rng
End Sub
定义一下Rng,我记得没错的话,type=8是表示单元格
1637745234(1).jpg
回复

使用道具 举报

 楼主| 发表于 2021-11-24 18:02 | 显示全部楼层
林木水 发表于 2021-11-24 17:09
Sub aa()
dim rng
rng = Application.InputBox(Prompt:="选择范围", Title:="鼠标拖动选择", Type:=8).Ad ...

谢谢,添加语句后同样的操作还是同样的报错
Sub aa()
Dim rng
rng = Application.InputBox(Prompt:="选择范围", Title:="鼠标拖动选择", Type:=8).Address
MsgBox rng
End Sub


type=8是单元格,但对话框空着,点确认还是同样的报错
回复

使用道具 举报

发表于 2021-11-24 18:25 | 显示全部楼层
本帖最后由 林木水 于 2021-11-24 18:36 编辑
4938613666 发表于 2021-11-24 18:02
谢谢,添加语句后同样的操作还是同样的报错
Sub aa()
Dim rng

你对话框里面空着的话点击确认。你输出要是一个地址,而你并没有选择单元格引用,怎么会有地址呢,不管你点哪个都会提示错误。

这是一个运行上的代码错误

可以在开头加一个On error resume next这条语句,意思是遇到代码错误直接跳过执行下一条

不过我试了,如果空的就直接点击确认的话还是错误
回复

使用道具 举报

 楼主| 发表于 2021-11-24 19:16 | 显示全部楼层
林木水 发表于 2021-11-24 18:25
你对话框里面空着的话点击确认。你输出要是一个地址,而你并没有选择单元格引用,怎么会有地址呢,不管你 ...

谢谢回复

On error resume next
可以使点取消的不报错
Application.DisplayAlerts = False
可以使空着对话框点确认不报错,但无法写入提示的语句
回复

使用道具 举报

发表于 2021-11-24 19:37 | 显示全部楼层    本楼为最佳答案   
Sub aa()
On Error Resume Next
Dim rng
Application.DisplayAlerts = False
100:
rng = Application.InputBox("选择范围", "鼠标拖动选择", "A1000", Type:=8).Address
If rng = "$A$1000" Then
    MsgBox "请输入单元格地址再操作!必须选择一个非A1000单元格才能关闭"
    GoTo 100
Else
    If rng = "" Then
    MsgBox "请输入单元格地址再操作!必须选择一个A1000单元格才能关闭"
    GoTo 100
    End If
    MsgBox rng
    Application.DisplayAlerts = True
End If
End Sub

这个就能解决了之前的问题,添加一个默认值第三个参数,不过你输出的rng的地址格式,但是你选择的过程又不是地址格式或者是空值它都是与你定义的类型相违背的,整体来说,不同类型去对比是没有意义一样。

评分

参与人数 1学分 +2 收起 理由
4938613666 + 2 感谢提供思路

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2021-11-24 21:55 | 显示全部楼层
林木水 发表于 2021-11-24 19:37
Sub aa()
On Error Resume Next
Dim rng

多谢多谢,我再琢磨琢磨
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2021-12-9 19:00 , Processed in 0.262871 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表