关于Excel vba编程中的Worksheet_Change事件

比如我在工作表Sheet1的A列到F列中输入的数据限制为1-9,否则弹出一个消息框提示重新输入.相关的代码放在Sheet1的Worksheet_Change事件中,正常输... 比如我在工作表Sheet1的A列到F列中输入的数据限制为1-9,否则弹出一个消息框提示重新输入.相关的代码放在Sheet1的Worksheet_Change事件中,正常输入的情况下没问题,但是有一点就是比如A1为8,A2为9,如果选中这两个单元格,鼠标位于右下角向下拖的时候,默认操作是按序列填充,由于填充的数据不满足条件,所以这时会发生错误.请问如何避免这种错误的出现?谢谢! 展开
 我来答
tiandiyunzhuan
2013-05-03 · TA获得超过176个赞
知道小有建树答主
回答量:152
采纳率:100%
帮助的人:103万
展开全部

不用vba

选择A列到F列,如图设置数据有效性



这样拖放,粘贴进去1-9以外的数都不会出错。

追问
谢谢你的回答,不过我提这个问题的初衷是想使的VBA程序更健全,而不是实现这种数据有效性的检查.重点是VBA而非其它!
追答
用代码可以这样
Sub my1Validation()
With Range("A:f").Validation
.Delete
.Add Type:=xlValidateWholeNumber, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="1", Formula2:="9"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.IMEMode = xlIMEModeNoControl
.ShowInput = True
.ShowError = True
End With
End Sub

或者

Sub my2Validation()
With Range("A:f").Validation
.Delete
.Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, _
Formula1:="1,2,3,4,5,6,7,8,9"
End With
End Sub
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式