excel 日历控件 |
您所在的位置:网站首页 › 台历日期怎么设计 › excel 日历控件 |
学习Excel技术,关注微信公众号: excelperfect 在使用Excel时,我们经常需要输入日期,典型的工作表是在某列中输入日期,其他列中再输入别的数据,例如下图1所示。 图1 方法1:使用数据有效性 为方便日期输入,我们可以制作一个下拉列表,让用户直接选择要输入的日期,如下图2所示。 图2 首先,在一个工作表的某列中输入所有日期数据,然后将日期数据区域命名。如下图3所示,在工作表Sheet2的列A中输入日期数据并命名为“year2019” 图3 在要输入日期的工作表列,设置数据有效性。选择列,单击功能区“数据”选项卡中的“数据工具——数据验证”,在“”中进行设置,如下图4所示。 图4 方法2:使用ActiveX日历控件 使用ActiveX日历控件,配合少量的VBA代码,能够实现方便地在单元格中输入日期,如下图5所示。 图5 首先,在功能区“开发工具”选项卡“控件”组中,单击“插入——其他控件”,如下图6所示。 图6 在“其他控件”对话框中,选取“日历控件12.0”,单击“确定”,如下图7所示。 图7 在工作表中放置日历控件,如下图8所示。 图8 在该工作表代码模块中,输入下面的代码: Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 2 Then '要插入日期的列 With Me.Calendar1 '显示日历控件 .Visible = True '日历控件出现的位置 '在当前单元格的右下方 .Top = Target.Top + Target.Height .Left = Target.Left + Target.Width End With Else '隐藏日历控件 Me.Calendar1.Visible = False End If End Sub Private Sub Calendar1_Click() '将日历控件中的值输入当前单元格 ActiveCell = Me.Calendar1.Value '隐藏日历控件 Me.Calendar1.Visible = False End Sub 代码中,Calendar1是日历控件的名称。 方法3:动态添加ActiveX日历控件 方法2中,我们是先在工作表中放置日历控件,然后使用该控件。所谓动态添加ActiveX日历控件,是在需要输入日期的地方使用代码添加日历控件,用户在选取日期后删除该控件。 在工作表代码模块中的代码如下: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim ole As OLEObject Dim ctl As MSACAL.Calendar Dim lLine As Long Dim oCodeModule As Object Application.ScreenUpdating = False If Intersect(ActiveCell,Columns("A")) Is Nothing Then Exit Sub With ActiveCell Set ole = ActiveSheet.OLEObjects.Add _ (ClassType:="MSCAL.Calendar.7", _ Link:=False, _ DisplayAsIcon:=False, _ Left:=.Left + .Width, _ Top:=.Top + .Height) End With ole.Name = "Calendar" Set oCodeModule = ThisWorkbook.VBProject.VBComponents(Me.CodeName).CodeModule With oCodeModule lLine =.CreateEventProc("Click", "Calendar") .ReplaceLine lLine + 1,"ProcessCalendarClick" End With Application.Visible = False Application.Visible = True End Sub Sub ProcessCalendarClick() Dim lLine As Long Dim lCount As Long Dim oCodeModule As Object With Me.OLEObjects("Calendar") ActiveCell = .Object.Value .Delete End With Set oCodeModule =ThisWorkbook.VBProject.VBComponents(Me.CodeName).CodeModule With oCodeModule lLine =.ProcStartLine("Calendar_Click", 0) lCount =.ProcCountLines("Calendar_Click", 0) .DeleteLines lLine, lCount End With End Sub 遗憾的是,上述代码在添加日历控件后,需要手动点一下功能区中的“设计模式”,然后再取消“设计模式”,才能实现在当前单元格中输入选取的日期。我也不知道为什么,有人能告诉我吗? 上述方法2和方法3的程序代码的图片版如下: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |