请求编写Excel VBA:为指定表格空单元格填充当前日期并实现保存及可选关闭
Excel VBA 实现日期填充、保存及关闭提示
以下是满足需求的完整VBA代码:
Sub ProcessTablesAndSave() Dim ws As Worksheet Dim tbl As ListObject Dim dateCol As ListColumn Dim cell As Range ' 处理Sheet1的Table1 Set ws = ThisWorkbook.Sheets("Sheet1") Set tbl = ws.ListObjects("Table1") Set dateCol = tbl.ListColumns("Date created") For Each cell In dateCol.DataBodyRange If IsEmpty(cell.Value) Then cell.Value = Date Next cell ' 处理Sheet2的Table2 Set ws = ThisWorkbook.Sheets("Sheet2") Set tbl = ws.ListObjects("Table2") Set dateCol = tbl.ListColumns("Date created") For Each cell In dateCol.DataBodyRange If IsEmpty(cell.Value) Then cell.Value = Date Next cell ' 处理Sheet3的Table3 Set ws = ThisWorkbook.Sheets("Sheet3") Set tbl = ws.ListObjects("Table3") Set dateCol = tbl.ListColumns("Date created") For Each cell In dateCol.DataBodyRange If IsEmpty(cell.Value) Then cell.Value = Date Next cell ' 保存当前工作簿 ThisWorkbook.Save ' 弹出选择提示框 Dim userChoice As VbMsgBoxResult userChoice = MsgBox("数据已成功保存。点击‘是’关闭文件,点击‘否’继续编辑", vbYesNo + vbInformation, "操作提示") ' 根据用户选择执行操作 If userChoice = vbYes Then ThisWorkbook.Close SaveChanges:=False End If End Sub
使用说明
- 打开目标Excel文件,按下
Alt + F11打开VBA编辑器 - 在左侧「工程资源管理器」中右键点击你的工作簿名称,选择插入 > 模块
- 将上述代码粘贴到新建模块的代码窗口中
- 按下
F5运行宏,或回到Excel界面,通过「开发工具」>「宏」选择ProcessTablesAndSave执行
关键代码解释
Date:获取当前系统日期,直接赋值为单元格值(而非公式)ListObjects("TableX"):定位工作表中的指定表格ListColumns("Date created"):定位表格中的目标列ThisWorkbook.Save:保存当前工作簿MsgBox:弹出交互提示框,根据返回的vbYes/vbNo执行对应操作ThisWorkbook.Close SaveChanges:=False:关闭文件时不重复提示保存(已提前完成保存)
内容的提问来源于stack exchange,提问作者Michael Molnár
相关产品推荐
相关产品推荐

