首页 > 科技 > VBA代码完成限制重复值的录入及求当月最后一天日期的方法

VBA代码完成限制重复值的录入及求当月最后一天日期的方法

分享成果,随喜真能量。大家好,今日内容仍是和大家分享VBA编程中常用的简单"积木"过程代码,这些内容大多是取至我编写的"VBA代码解决方案"教程中内容。NO.168-NO.169内容是:

NO. 170:如何利用VBA代码,限制重复值的录入

NO. 171:如何利用VBA代码,使用消息框显示当月最后一天的日期


VBA过程代码170:如何利用VBA代码,限制重复值的录入

Private Sub Worksheet_Change(ByVal Target As Range)

With Target

If .Column <> 1 Or .Count > 1 Then Exit Sub

If WorksheetFunction.CountIf(Range("A:A"), .Value) > 1 Then

.Select

MsgBox "不能输入重复的人员编号!", 64

Application.EnableEvents = False

.Value = ""

Application.EnableEvents = True

End If

End With

End Sub

代码的解析说明:工作表的Change事件过程,使A列单元格只能录入唯一的人员编号。

代码中使用工作表的CountIf 函数来判断在A列单元格输入的人员编号是否重复。在示例中以所录入的人员编号与A列单元格区域进行比较,如果CountIf 函数的返回值大于1,说明录入的是重复编号。在清除前将Application对象的EnableEvents属性设置为False,禁止触发事件。因为如果不禁用事件,那么在清除重复值的过程中会不断地触发工作表的Change事件,从而造成代码运行的死循环。经过以上的设置,在工作表的A列中只能录入唯一的人员编号,如果录入重复值会进行提示不能输入重复的人员编号!

——————————————————————————————————————————————————————————————————————————————

VBA过程代码171:如何利用VBA代码,使用消息框显示当月最后一天的日期

Sub mynz()

Dim MyDateStr As Byte

MyDateStr = Day(DateSerial(Year(Date), Month(Date) + 1, 0))

MsgBox "本月的最后一天是" & Month(Date) & "月" & MyDateStr & "号"

End Sub

代码的解析说明:上述的Mynz过程配合使用了4个VBA内置函数Year、Month、Day和DateSerial完成计算并使用消息框显示当月最后一天的日期。Date为当前的具体日期。 Month(Date) + 1 表示当前月的下个月。 Day(DateSerial(Year(Date), Month(Date) + 1, 0)) 表示当前月的下个月的前一天。

VBA是实现自己小型办公自动化的有效手段,我根据自己20多年的VBA实际利用经验,现推出了四部VBA教程,这些是我多年编程经验的记录,也是我"积木编程"思想的体现。每一讲都是较大块的"积木",可以独立的完成某些或者某类的过程,有需要的朋友可以联络(WeChat:NZ9668)分享。利用这些可以提高自己的编程效率。其一:"VBA代码解决方案"PDF教程,是VBA中各个知识点的讲解,覆盖了绝大多数的知识点,是初学及中级以下人员必备;其二"VBA数据库解决方案"PDF教程,数据库是数据处理的利器,对于中级人员应该掌握这个内容了。其三"VBA数组与字典解决方案"PDF教程,讲解VBA的精华----字典,是我们打开思路,提高代码水平的必备。其四"VBA代码解决方案"视频教程。目前正在录制,"每天20分钟,半年精进VBA",越早参与,回馈越多。现在录制到第二册的95讲。

本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.souzhinan.com/kj/285463.html