Excel精英培训网

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

[求助]关于日历控件使用的几个问题

[复制链接]
发表于 2007-8-23 10:02 | 显示全部楼层 |阅读模式

1.此帖http://www.excelpx.com/dispbbs.asp?BoardID=5&replyID=87660&id=24468&skin=0

其中兰色幻想版主给出的解决方法中加了一句MM=1不懂是什么意思.

2.针对上面帖子里的附件,发现使用日历控件过程中,在某一单元格中添加日期后,下面的单元格就不能添加相同的日期了

请教解决方案..

谢谢大家

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2007-8-23 10:47 | 显示全部楼层

这样处理更合理一些,当剪切复制模式无效时,才执行后面的语句

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Application.CutCopyMode <> 0 Then Exit Sub
With Target
     If Target.Column = 7 And Target.Row > 1 Then
        Calendar1.Top = Target.Top + Target.Height
        Calendar1.Left = Target.Left + Target.Width
        Calendar1.Value = ActiveCell.Value
        Calendar1.Visible = True
    ElseIf Target.Column <> 7 Then
        Calendar1.Visible = False
    End If
End With
End Sub

回复

使用道具 举报

发表于 2007-8-23 10:53 | 显示全部楼层

QUOTE:
以下是引用ldy在2007-8-23 10:47:26的发言:

这样处理更合理一些,当剪切复制模式无效时,才执行后面的语句

 

好象还是不能重复加入日期!

回复

使用道具 举报

发表于 2007-8-23 10:58 | 显示全部楼层

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Application.CutCopyMode <> 0 Then Exit Sub
With Target
     If Target.Column = 7 And Target.Row > 1 Then
        Calendar1.Top = Target.Top + Target.Height
        Calendar1.Left = Target.Left + Target.Width
        Calendar1.Value = ActiveCell.Value
        Calendar1.Visible = True
    ElseIf Target.Column <> 7 Then
        Calendar1.Visible = False
    End If
End With

Application.CutCopyMode = 0 '此句可选

End Sub

回复

使用道具 举报

发表于 2007-8-23 11:13 | 显示全部楼层

QUOTE:
以下是引用hhzjxss在2007-8-23 10:53:53的发言:
QUOTE:
以下是引用ldy在2007-8-23 10:47:26的发言:

这样处理更合理一些,当剪切复制模式无效时,才执行后面的语句

 

好象还是不能重复加入日期!

呵呵没看清题意

好象还是不能重复加入日期!

  Calendar1.Value = ActiveCell.Value  ----〉去掉这一句就好了

回复

使用道具 举报

发表于 2007-8-23 11:15 | 显示全部楼层

哦,还没注意到这点
回复

使用道具 举报

发表于 2007-8-23 11:30 | 显示全部楼层

如果想保留 原来的功能 并添加对空单元格显示当天的日期

Calendar1.Value = ActiveCell.Value  这一句要添加判断

绿色部分可选

If IsDate(ActiveCell.Value) Then Calendar1.Value = ActiveCell.Value Else Calendar1.Value = Date

回复

使用道具 举报

 楼主| 发表于 2007-8-23 12:33 | 显示全部楼层

谢谢楼上几位,我去试试

回复

使用道具 举报

 楼主| 发表于 2007-8-23 13:19 | 显示全部楼层

QUOTE:
以下是引用ldy在2007-8-23 11:13:04的发言:
QUOTE:
以下是引用hhzjxss在2007-8-23 10:53:53的发言:
QUOTE:
以下是引用ldy在2007-8-23 10:47:26的发言:

这样处理更合理一些,当剪切复制模式无效时,才执行后面的语句

 

好象还是不能重复加入日期!

呵呵没看清题意

好象还是不能重复加入日期!

  Calendar1.Value = ActiveCell.Value  ----〉去掉这一句就好了

为什么去掉那一句就没问题了.能简单说下机理吗?
回复

使用道具 举报

发表于 2007-8-23 13:44 | 显示全部楼层

If IsDate(ActiveCell.Value) Then Calendar1.Value = ActiveCell.Value Else Calendar1.Value = Date

这一句代码就说明问题了。

具体原理一下也说不明白,要了解具体原因就要找这个控件的开发人 微软 了

我的理解:

当ActiveCell 为空时 ActiveCell.Value 就是 "" 零长度的字符串

而Calendar1的值是 date 型数据,这是就产生一个错误,当前的日期按钮被锁住了

点击它 就像点击其他 位置一样 Calendar1返回一个  "" 零长度的字符串

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 20:40 , Processed in 0.285827 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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