如何在Access中自动填充上月1日日期?Excel导入无日期字段
解决Access导入Excel数据后自动填充上月1日日期的问题
方案1:表字段默认值(最省事的方法)
不用搞宏,直接在Access里改表设计就行:
- 新增一个「日期/时间」类型的字段(比如叫
统计月份) - 找到这个字段的默认值属性,输入:
这个公式会直接生成上月1日的日期值,导入数据时新记录会自动填上。要是想显示成DateSerial(Year(Date()), Month(Date())-1, 1)mmyy的格式,直接把字段的格式属性改成mmyy就行——底层还是日期类型,后续筛选、计算都方便,比存文本靠谱。
方案2:After Update 宏/事件过程(适合特殊逻辑场景)
如果必须用After Update触发,两种方式选:
宏实现
- 打开表的设计视图,切到「事件」标签页
- 点
After Update旁边的生成器,选宏生成器 - 加一个
SetField操作:- 字段:选你要填日期的字段
- 值:输入
DateSerial(Year(Date()), Month(Date())-1, 1)
- 保存宏,之后数据更新(包括导入后的新记录)都会自动触发填充。
VBA事件过程(更灵活)
要是会点VBA,直接在表的类模块写代码:
Private Sub Form_AfterUpdate() Me!统计月份 = DateSerial(Year(Date()), Month(Date()) - 1, 1) End Sub
保存后,每次记录更新(导入的新记录也会触发)都会自动把日期设为上月1日。
修正你原来的公式
你之前用的Format(DateAdd("m", -1, Date()), "mmyy")得到的是文本格式的mmyy,没法当日期用。要转成日期类型的上月1日,用这个:
DateAdd("d", -Day(Date()) + 1, DateAdd("m", -1, Date()))
原理是先把当前日期回退到上月最后一天,再加1天就是上月1日,和DateSerial效果一样。
内容的提问来源于stack exchange,提问作者Sammm
相关产品推荐
相关产品推荐

