如何在Access VBA中将通用日期转为combobox下拉列表的唯一月份
Access中把ComboBox日期转成唯一月份的实现方法
方法1:用查询做数据源(无代码)
这是最省心的方式:
- 打开Access,新建一个查询,选中你的目标数据表
- 在查询设计视图的字段行,输入:
唯一月份: Format([Date],"yyyy年mm月")(要英文格式就改成Format([Date],"yyyy-mm")) - 点击顶部的「汇总」按钮(Σ图标),在该字段的总计行选「Group By」,这样会自动去重,只留每个月份的唯一值
- 保存查询(比如叫
qry_唯一月份),然后回到ComboBox的属性面板,把「行来源」设为这个查询,「绑定列」和「列数」都设为1,就能显示唯一月份列表了
方法2:VBA代码动态生成列表
如果需要更灵活的控制,用VBA实现:
- 打开窗体的代码编辑器(按F7)
- 在窗体的
Load事件里贴入以下代码,记得替换里面的表名和ComboBox名称:
Private Sub Form_Load() Dim rs As Recordset Dim monthDict As Object Dim monthStr As String Set monthDict = CreateObject("Scripting.Dictionary") ' 替换成你的数据表名称 Set rs = CurrentDb.OpenRecordset("SELECT [Date] FROM 你的数据表名称") Do While Not rs.EOF ' 格式化日期为月份格式,可按需修改 monthStr = Format(rs![Date], "yyyy年mm月") ' 字典自动去重 If Not monthDict.Exists(monthStr) Then monthDict.Add monthStr, monthStr End If rs.MoveNext Loop ' 填充到ComboBox Me.你的ComboBox名称.RowSource = "" Me.你的ComboBox名称.List = monthDict.Keys rs.Close Set rs = Nothing Set monthDict = Nothing End Sub
内容的提问来源于stack exchange,提问作者Shiela
相关产品推荐
相关产品推荐

