Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 10658|回复: 13

[已解决]excel在任意两个单元格内插入日历控件

[复制链接]
发表于 2014-12-15 15:40 | 显示全部楼层 |阅读模式
如题,不是一行,也不是一列,比如A1,B2这种,是日历控件不是DTP控件,VBA程序应该怎么写?
最佳答案
2014-12-15 16:27
本帖最后由 冥王 于 2014-12-15 16:28 编辑

代码稍作处理了一下
  1. Private Sub Calendar1_Click()
  2.     ActiveCell.Value = Calendar1.Value
  3.     Calendar1.Visible = False
  4. End Sub


  5. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  6.     If Target.Count = 1 And (Target.Address = "$A$1" Or Target.Address = "$B$1") Then
  7.         With Calendar1
  8.             .Visible = True
  9. '            .Height = 120                      '日历控件的高,注释的4行代码也可以不用加入,采取默认设置也行
  10. '            .Width = 180                       '日历控件的宽
  11. '            .Top = Target.Offset(1, 0).Top     '日历控件的上方与当前单元格的下面那个单元格上边线对齐
  12. '            .Left = Target.Offset(0, 1).Left   '日历控件的左边与当前单元格的右边那个单元格左边线对齐
  13.             .Value = Target.Value
  14.         End With
  15.     Else
  16.         Calendar1.Visible = False
  17.         Exit Sub
  18.     End If
  19. End Sub
复制代码

评分

参与人数 1 +1 收起 理由
ioi_chan + 1 赞一个

查看全部评分

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-12-15 15:52 | 显示全部楼层
本帖最后由 冥王 于 2014-12-15 15:56 编辑

……

日历.rar

20.32 KB, 下载次数: 200

评分

参与人数 4 +39 金币 +26 收起 理由
七帝 + 1 很给力!
ghostjiao + 12 神马都是浮云
suye1010 + 6 + 6 很给力!
qh8600 + 20 + 20 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2014-12-15 16:27 | 显示全部楼层    本楼为最佳答案   
本帖最后由 冥王 于 2014-12-15 16:28 编辑

代码稍作处理了一下
  1. Private Sub Calendar1_Click()
  2.     ActiveCell.Value = Calendar1.Value
  3.     Calendar1.Visible = False
  4. End Sub


  5. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  6.     If Target.Count = 1 And (Target.Address = "$A$1" Or Target.Address = "$B$1") Then
  7.         With Calendar1
  8.             .Visible = True
  9. '            .Height = 120                      '日历控件的高,注释的4行代码也可以不用加入,采取默认设置也行
  10. '            .Width = 180                       '日历控件的宽
  11. '            .Top = Target.Offset(1, 0).Top     '日历控件的上方与当前单元格的下面那个单元格上边线对齐
  12. '            .Left = Target.Offset(0, 1).Left   '日历控件的左边与当前单元格的右边那个单元格左边线对齐
  13.             .Value = Target.Value
  14.         End With
  15.     Else
  16.         Calendar1.Visible = False
  17.         Exit Sub
  18.     End If
  19. End Sub
复制代码

评分

参与人数 1 +1 收起 理由
七帝 + 1 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-12-15 19:07 | 显示全部楼层
冥王 发表于 2014-12-15 16:27
代码稍作处理了一下

非常感谢冥王大大,这个问题已经解决了。能不能再请问一下,合并多个单元格以后怎么插入日历控件,万分感谢
回复

使用道具 举报

发表于 2014-12-15 21:31 | 显示全部楼层
七帝 发表于 2014-12-15 19:07
非常感谢冥王大大,这个问题已经解决了。能不能再请问一下,合并多个单元格以后怎么插入日历 ...

  1. If Target.Count = 1 And (Target.Address = "$A$1" Or Target.Address = "$B$1") Then
复制代码



如果是合并单元格的话,如A1 BA两个单元格合并了,上面那行代码需要修改成:

  1. If Target.Address = "$A$1:$B$1" Then
复制代码

评分

参与人数 1 +1 收起 理由
七帝 + 1 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-12-16 22:15 | 显示全部楼层
冥王 发表于 2014-12-15 21:31
如果是合并单元格的话,如A1 BA两个单元格合并了,上面那行代码需要修改成:

冥王大大太给力了,能不能再麻烦以下,在两个合并的单元格里插入日历控件怎么改?谢谢
回复

使用道具 举报

发表于 2014-12-16 22:47 | 显示全部楼层
本帖最后由 冥王 于 2014-12-16 22:49 编辑
  1. Private Sub Calendar1_Click()
  2.     ActiveCell.Value = Calendar1.Value
  3.     Calendar1.Visible = False
  4. End Sub


  5. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  6.     If Target.Address = "$A$1:$B$1" Or Target.Address = "$D$1:$E$1" Or Target.Address = "$F$1:$G$1" Then  '多个合并单元格,这里可以一直or,地址作下适当更改,此处A1B1、D1E1、F1G1是三个合并单元格
  7.         With Calendar1
  8.             .Visible = True
  9.             '            .Height = 120                      '日历控件的高,注释的4行代码也可以不用加入,采取默认设置也行
  10.             '            .Width = 180                       '日历控件的宽
  11.             '            .Top = Target.Offset(1, 0).Top     '日历控件的上方与当前单元格的下面那个单元格上边线对齐
  12.             '            .Left = Target.Offset(0, 1).Left   '日历控件的左边与当前单元格的右边那个单元格左边线对齐
  13.             .Value = Target.Value
  14.         End With
  15.     Else
  16.         Calendar1.Visible = False
  17.         Exit Sub
  18.     End If
  19. End Sub
复制代码

评分

参与人数 1 +1 收起 理由
七帝 + 1 很给力!

查看全部评分

回复

使用道具 举报

发表于 2014-12-17 15:01 | 显示全部楼层
冥王 发表于 2014-12-15 16:27
代码稍作处理了一下

冥王老师:为什么任意点一个单元格就出现一个对话框,是什么原因,请指教,多谢。
10.jpg
回复

使用道具 举报

发表于 2014-12-17 15:43 | 显示全部楼层
dyzx 发表于 2014-12-17 15:01
冥王老师:为什么任意点一个单元格就出现一个对话框,是什么原因,请指教,多谢。

看一下你的Excel 插入控件这里有日历控件吗,版本是11.0还是12.0没关系,没有的话到网上去下载一个,爱疯版主有个帖子,就有提供下载的,可以去看一下
http://www.excelpx.com/thread-255298-1-1.html


7694b260-070d-490f-9887-712bea537fce.jpg

评分

参与人数 1 +1 收起 理由
七帝 + 1 很给力!

查看全部评分

回复

使用道具 举报

发表于 2014-12-17 17:05 | 显示全部楼层
冥王 发表于 2014-12-17 15:43
看一下你的Excel 插入控件这里有日历控件吗,版本是11.0还是12.0没关系,没有的话到网上去下载一个,爱疯 ...

冥王老师:如果没有怎样操作,我安装的系统是win7  64位操作系统,请指教,多谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-15 19:55 , Processed in 0.276795 second(s), 20 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表