我想检查excel给定行中的任何单元格值(例如第6行)是否超过40.我写道:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
For Each cell In ActiveSheet.Rows(6)
If cell.Value > 40 Then MsgBox "You exceeded 40 in cell: " & cell.Address & ". Please correct your input!"
Next cell
End Sub
但它给了我一条错误信息
你能告诉我吗?感谢。运行时错误13,类型不匹配。
答案 0 :(得分:0)
获取每个单元格,将for
- 循环更改为
For Each cell In ActiveSheet.Rows(6).Cells
但是,每次在工作表中更改任何 时,这将检查完整的第6行。我想最好只检查Target
的值 - 这是用户当前修改的单元格。
<强>更新强> 你可以改变你的日常工作
Private Sub Worksheet_Change(ByVal Target As Range)
If target.row = 6 && Target.Value > 40 Then
MsgBox "You exceeded 40 in target: " & target.Address & ". Please correct your input!"
endif
End Sub
但是,如果您只想阻止用户输入大于40的某个值,则可以使用数据验证轻松地在没有VBA的情况下将其归档:
马克第6行, 选择数据 - &gt;数据验证 - &gt;数据验证
输入例如“整数”(如果要允许逗号值,则为小数),“小于或等于”,最大值为40。