提示:其它语言是由 Google 机器翻译的。 你可以访问 English 版本。
登录
x
or
x
x
马上登记
x

or

如何在Excel中单击特定单元格时弹出日历?

假设工作表中有一个列范围,您需要经常输入和更改日期内的日期,但每次都手动输入或更改日期感到厌倦。 如何快速输入日期而无需手动输入列范围? 本文讨论在点击特定范围内的单元格时弹出日历,然后在日历中选择日期后自动将日期插入选定单元格。

使用VBA代码单击特定单元格时弹出日历

用日历创建一个用户窗体

单击单元格时激活日历


日期选择器(从日历中轻松选择具有特定日期格式的日期并插入所选单元格):

点击 Kutools > 插页 > 插入日期,并在“插入日期”对话框中指定一个日期格式,双击某个日期以将该日期直接插入选定的单元格中。 看下面的截图:

Kutools for Excel:比200方便的Excel加载项,可以在60天免费试用。 立即下载免费试用版!

Office选项卡在Office中启用选项卡式编辑和浏览,使您的工作更轻松......
Kutools for Excel - 最佳办公生产力工具将解决您的大部分Excel问题
  • 重用任何东西: 将最常用或最复杂的公式,图表和其他任何内容添加到您的收藏夹中,并在将来快速重复使用它们。
  • 超过20文本功能: 从文本字符串中提取数字; 提取或删除部分文本; 将数字和货币转换为英语单词...
  • 合并工具:多个工作簿和表格合二为一; 合并多个单元格/行/列而不丢失数据; 合并重复行和总和...
  • 拆分工具:根据价值将数据拆分为多个表格; 一个工作簿到多个Excel,PDF或CSV文件; 一列到多列......
  • 粘贴跳过 隐藏/过滤行; 数和总和 按背景颜色; 创建邮件列表和 通过Cell的价值发送电子邮件...
  • 超级过滤器: 创建高级过滤方案并应用于任何工作表; 排序 按周,日,频率等; 筛选 通过大胆,公式,评论......
  • 超过300强大的功能; 适用于Office 2007-2019和365; 支持所有语言; 在公司轻松部署; 全功能60天免费试用。

使用VBA代码单击特定单元格时弹出日历


请逐步解决此问题。

注意:此方法只能在Microsoft Excel 32位上工作。

用日历创建一个用户窗体

请创建一个UserForm,其中包含您将通过单击单元格弹出的日历。

1。 按 其他 + F11 键同时打开 Microsoft Visual Basic for Applications 窗口。

2。 在里面 Microsoft Visual Basic for Applications 窗口中,单击 插页 > 用户窗体.

3。 然后a 用户窗体工具箱 窗户弹出,在 工具箱,单击任意一个控件并右键单击,然后选择 其他控件 从右键菜单。 看截图:

4。 在里面 其他控件 对话框,向下滚动以查看 Microsoft MonthView控件 在选项 可用的控件 框,然后单击 OK 按钮。

5。 那你就可以看到了 MonthView 按钮添加在 工具箱 窗口。 请单击此MonthView按钮,然后单击UserForm1窗口以在用户窗体中创建日历。

注意:您可以通过拖动用户窗体的边框来调整UserForm窗口的大小以适应插入的日历。

6。 双击UserForm1中的插入日历,然后在 代码 窗口,请用以下VBA脚本替换原始代码。

VBA代码:使用日历创建用户表单

Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
 On Error Resume Next
   Dim xRg As Object
   For Each xRg In Selection.Cells
      xRg.Value = DateClicked
   Next xRg 
   Unload Me
End Sub

注意:从日历中选择日期后,此代码可以帮助将日期插入选定的单元格。

单击单元格时激活日历

现在您需要指定某些单元格以在点击时弹出日历。 请做如下。

7。 双击包含您要单击的单元格的工作表名称,以弹出左侧的日历 项目 窗格,然后将下面的VBA代码复制并粘贴到代码窗口中。 看截图:

VBA代码:点击单元格弹出日历

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If (Target.Count = 1) Then
    If Not Intersect(Target, Range("A2:A10")) Is Nothing Then UserForm1.Show
    End If
End Sub

注意:在代码中,A2:A10是您将单击以弹出日历的单元格。 请根据需要更改单元格范围。

8。 按 其他 + Q 键同时关闭 Microsoft Visual Basic for Applications 窗口。

从现在开始,当点击当前工作表中指定范围内的任何单元格时,会弹出一个日历,如下图所示。 从日历中选择日期后,日期会自动插入选定的单元格。


相关文章:


Kutools for Excel - 最佳办公生产力工具提高80%的生产力

  • 重用: 快速插入 复杂的公式,图表 以及你以前用过的任何东西; 加密单元格 密码; 创建邮件列表 并发送电子邮件...
  • 超级方程式酒吧 (轻松编辑多行文字和公式); 阅读布局 (轻松读取和编辑大量单元格); 粘贴到过滤范围...
  • 合并单元格/行/列 不丢失数据; 分裂细胞含量; 组合重复的行/列...防止重复的细胞; 比较范围...
  • 选择复制或唯一 行; 选择空行 (所有细胞都是空的); 超级查找和模糊查找 在许多工作簿中; 随机选择......
  • 精确复制 多个单元格而不更改公式参考; 自动创建参考 多张表; 插入项目符号,复选框等等......
  • 提取文本,添加文本,按位置删除, 删除空间; 创建和打印分页小计; 在单元格内容和注释之间转换...
  • 超级过滤器 (将过滤方案保存并应用到其他工作表); 高级排序 按月/周/日,频率等; 特殊过滤器 用粗体,斜体......
  • 结合工作簿和工作表; 根据键列合并表; 将数据拆分为多个表格; 批量转换xls,xlsx和PDF...
  • 超过300强大的功能。 支持Office / Excel 2007-2019和365。 支持所有语言。 在您的企业或组织中轻松部署。 全功能60天免费试用。
kte tab 201905

Office选项卡为Office提供选项卡式界面,使您的工作更轻松

  • 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,Publisher,Access,Visio和Project。
  • 在同一窗口的新选项卡中打开并创建多个文档,而不是在新窗口中。
  • 通过50%提高您的工作效率,每天为您减少数百次鼠标点击!
官方底部
Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Hannah · 13 days ago
    The calendar will show up but when I click on the date, the cell doesn't populate
  • To post as a guest, your comment is unpublished.
    DwarthK · 4 months ago
    Thank you so much! These directions were super useful :)
  • To post as a guest, your comment is unpublished.
    jeet · 6 months ago
    Hi, Is it possible to put the date picker pop-up for multiple column, as in my sheet I have "start date", "end date" and "agreement date". if yes then how?
    • To post as a guest, your comment is unpublished.
      crystal · 6 months ago
      Hi jeet,
      Follow the steps and replace the range "A2:A10" in the second VBA code with your column range (such as C2:E2).
  • To post as a guest, your comment is unpublished.
    Giuseppe · 7 months ago
    Salve il codice funziona benissimo, ma se volessi farlo funzionare anche su un altro foglio
  • To post as a guest, your comment is unpublished.
    Sam · 8 months ago
    if i try to select a row, the pop up will activate and the date appears in each cell in that row


    how can i avoid this
    • To post as a guest, your comment is unpublished.
      crystal · 7 months ago
      Hi Sam,
      The code has been updated in the article with the problem solving. Please have a try and thank you for your comment.
  • To post as a guest, your comment is unpublished.
    cevat · 8 months ago
    tarihi seçebiliyorum ama a1:a10 hücrelerine seçtiğim tarih eklenmiyor. teşekkür ederim
  • To post as a guest, your comment is unpublished.
    MG · 1 years ago
    Hello everyone,

    Can anyone tell me how to popup a calendar in a range of cells, but starting only from the cell right bellow a table header and down bellow in an excel column.


    Thank you in advance.
    • To post as a guest, your comment is unpublished.
      Chris · 8 months ago
      Use i.e: Range("B6:C30")
    • To post as a guest, your comment is unpublished.
      crystal · 1 years ago
      Good Day,
      Sorry I didn't got your question. Would be nice if you could provide screenshot of what you are trying to do.
  • To post as a guest, your comment is unpublished.
    George · 2 years ago
    i used these VBA codes and everthing's fine so far. The range is A2:A10 and calendar pops up when you select a cell into it. But if you mark row from 2 to 10 again the calendar pops again. It's the same with column "A" if you mark it, again the calendar pops. How should i proceed, in order to get the calendar only in the range i've defined?
  • To post as a guest, your comment is unpublished.
    Sirimon · 2 years ago
    I want to show pop up calendar under the cell selected.How should I do?