马上注册,结交更多好友,享用更多功能,让你轻松玩转新大榭论坛!
您需要 登录 才可以下载或查看,没有账号?注册
x
在工作表中录入数据时,有时希望能限制重复值的录入,比如在示例的A列单元格只能录入唯一的人员编号,此时可以利用工作表的Change事件结合工作表的CountIf 函数来判断所录入的人员编号是否重复,示例代码如下。 - Private Sub Worksheet_Change(ByVal Target As Range)
/ ~* [8 @7 ~4 _# y - With Target
& [- \# z3 g8 w) P. e( j5 } - If .Column <> 1 Or .Count > 1 Then Exit Sub
$ [( J9 u: w/ A9 _. w0 n - If Application.CountIf(Range("A:A"), .Value) > 1 Then
7 Z+ o& v W3 _. F! a - .Select" n. _- {! y; m0 P0 F
- MsgBox "不能输入重复的人员编号!", 64+ [4 f9 Y4 w" T( h
- Application.EnableEvents = False2 U& L; B& k E/ n0 l9 ] ~
- .Value = ""
9 E7 q' @" I: X- N - Application.EnableEvents = True
) O5 E- _, d8 `1 x& [4 l3 ~8 P4 V - End If
N% L9 Q7 L- \ - End With9 J7 V7 `) ^! y/ p
- End Sub
复制代码 / Z* E; o. Q$ U; _! U" D0 D' ^9 c
代码解析: 工作表的Change事件过程,使A列单元格只能录入唯一的人员编号。 第4行代码使用工作表的CountIf 函数来判断在A列单元格输入的人员编号是否重复。 工作表的CountIf 函数计算区域中满足给定条件的单元格的个数,语法如下: COUNTIF(range, criteria) 参数range为需要计算其中满足条件的单元格数目的单元格区域。 参数criteria为确定哪些单元格将被计算在内的条件,其形式可以为数字、表达式、单元格引用或文本。 在示例中以所录入的人员编号与A列单元格区域进行比较,如果CountIf 函数的返回值大于1,说明录入的是重复编号。 第5行代码,重新选择该单元格便于下一步清空后重新录入。 第7、8、9行代码,清除录入的重复编号,在清除前将Application对象的EnableEvents属性设置为False,禁用事件。因为如果不禁用事件,那么在清除重复值的过程中会不断地触发工作表的Change事件,从而造成代码运行的死循环。 经过以上的设置,在工作表的A列中只能录入唯一的人员编号,如果录入重复值会进行提示,如图155‑1所示,点击确定后自动清除录入的重复编号。
' c( }, y. ]4 E/ g% k4 f. H |