1、在某一单元格中插入日历控件
(1)选中要插入日历控件的单元格,设置单元格格式为日期型;
(2)点击工具栏,“插入—对象—日历控件”,
(3)用快捷方式Alt+F11,双击插入控件的工作表名称,粘贴下面的代码,用来实现单击A1时弹出日历控件,单击日历控件后,将选中的日期值填入A1并隐藏控件。
Private Sub Calendar1_Click()
ActiveCell = Calendar1
Calendar1.Visible = False
[a2].Select
End Sub
Private Sub Worksheet_SelectionChange(ByValTarget As Range)
If Target.Address = "$A$1" ThenCalendar1.Visible = True
End Sub
2、某一列全部设置为插入日历控件。
例如;在C列中,无论点击哪个单元格,就弹出日历控件,选择一个日期后,日期自动插入到单元格;除C列之外,点击其他单元格,不会弹出日历选择控件;
同上面(1)(2)步后,选择日历控件,双击鼠标,进入代码编辑模式,选择Worksheet和SelectionChange,输入代码:
Private Sub Calendar1_Click()
ActiveCell = Calendar1.Value
Me.Calendar1.Visible = False
End Sub
Private Sub Worksheet_SelectionChange(ByValTarget As Range)
If Target.Column = 1 Then
Me.Calendar1.Visible = True
Else
Me.Calendar1.Visible = False
End If
End Sub
完成后,运行VBA代码,返回Excel操作窗口,即可实现。
Excel中单元格月历下拉选择实现方法
一、日历控件的使用方法
1、打开excel文件,以对sheet1的操作为例:点中要插入日期的单元格,
工具栏→插入→对象→选 日期空间11.0 →确定。
2、工具栏→工具→宏→Visual Basic 编辑器
在 ‘通用’加入如下代码:
Private Sub Calendar1_Click()
ActiveCell = Format(Calendar1.Value, "yyyy-mm-dd") '设置日期格式,此工作可以直接通过设置某列单元格格式一次性完成
Calendar1.Visible = False '单击日历控件后隐藏之
End Sub
Private Sub Worksheet_SelectionChange(ByValTarget As Range)
IfTarget.Column = 4 Then 'D列为日期输入列
Calendar1.Left = Target.Left + Target.Width '设置日历控件弹出后的位置
Calendar1.Top = Target.Top + Target.Height '同上
Calendar1.Value = Date '设置默认日期为系统日期
Calendar1.Visible = True '使日历控件可见
ElseIf Target.Column = 5 Then 'E列为日期输入列
Calendar1.Left = Target.Left + Target.Width
Calendar1.Top = Target.Top + Target.Height
Calendar1.Value = Date
Calendar1.Visible = True
ElseIfTarget.Column = 6 Then 'F列为日期输入列
Calendar1.Left = Target.Left + Target.Width
Calendar1.Top = Target.Top + Target.Height
Calendar1.Value = Date
Calendar1.Visible = True
Else
Calendar1.Visible = False '单击其他列时隐藏日历控件
End If
End Sub
保存。
3、设计好后,还可以对日期列进行“设置单元格格式”
4、不足之处
a、要实用该宏,首先要在EXCEL→工具→宏→安全性→选中(在打开文件的时候允许宏)或低,才可以使用该日期控件;
b、在使用宏控件的时候,excel中鼠标右键的粘贴功能将失效,需要借助 EXCEL→编辑→office剪贴板的功能才能完成单元格复制粘贴的功能;
c、也可以在打开文件的时候禁用宏,这样就可以正常使用粘贴功能了。