如何用vba实现在EXCEL固定区域坐标内点击单元格,显示日期控件?

 我来答
MrFoch
2011-02-23 · TA获得超过849个赞
知道小有建树答主
回答量:253
采纳率:100%
帮助的人:269万
展开全部
试验通过测试。
以在E列显示日期时间选择控件为例:
首先从工具箱选择日期时间选择控件,并在工作表中绘制一个控件实例:DTPicker1
在工作表代码页写入如下代码
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
Set rag = Application.Intersect(Target, Range("E:E"))
If rag Is Nothing Or rag.Address <> Target.Address Then
'这里的判断显得有些蹩脚,应该有更好办法,希望高手补充!
Else
With DTPicker1
.Top = Target.Cells(1).Top
.Left = Target.Cells(1).Left
.Width = Target.Cells(1).Width
.Height = Target.Cells(1).Height
'设置控件与所选单元格关联:
.LinkedCell = Target.Cells(1).Address
.Visible = True
End With
End If
End Sub

修正代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
Set rag = Application.Intersect(Target, Range("E:E"))
'主要是这句有所区别
If (Not rag Is Nothing) Then
If Target.Address = rag.Address Then
With DTPicker1
.Visible = True
.Top = Target.Cells(1).Top
.Left = Target.Cells(1).Left
.Width = Target.Cells(1).Width
.Height = Target.Cells(1).Height
.LinkedCell = Target.Cells(1).Address
.Visible = True
End With
End If
Else
DTPicker1.Visible = False
End If
End Sub以上两种方法都可以实现在E列显示空间,在其它列不显示控件。

❤❤❤请高手回复的问题:
当代码改为如下所示时在所有的单元格都显示控件,这是为什么呢!!
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
Set rag = Application.Intersect(Target, Range("E:E"))
'仅这句不同
If (Not rag Is Nothing) And Target.Address = rag.Address Then
With DTPicker1
.Top = Target.Cells(1).Top
.Left = Target.Cells(1).Left
.Width = Target.Cells(1).Width
.Height = Target.Cells(1).Height
.LinkedCell = Target.Cells(1).Address
.Visible = True
End With
End If
End Sub
太极健1969
2011-02-23 · TA获得超过9034个赞
知道大有可为答主
回答量:8668
采纳率:69%
帮助的人:3625万
展开全部
使用单元格被选择事件
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
具体问题具体处理,HI我
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
caochc
2011-02-22 · 超过17用户采纳过TA的回答
知道答主
回答量:96
采纳率:0%
帮助的人:42.6万
展开全部
Excel 2007 直接做一个按钮 就行了
更多追问追答
追问
怎么实现,把代码给出来啊
追答
你是想 点一下 就出现日期吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
流浪的智慧
2011-02-23 · TA获得超过403个赞
知道答主
回答量:48
采纳率:0%
帮助的人:35.7万
展开全部
使用VBA, 增加一个form (表单),然后在菜单中选择,tool (工具)-〉Additional Control (附加控件),选择 Calander Control (日期控件) ,然后拖到form 上,调整好大小。 表单命名为userform1 , 日期控件的名为 Calendar1

在sheet1 中加入以下代码 ( 假设你要在sheet1的"A1" 中设定位启动日起菜单的单元格):

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If TypeName(Selection) <> "Range" Then Exit Sub
If Selection.Address = "$A$1" Then
UserForm1.Show
End If
End Sub

在userform1 的代码中加入以下代码:

Private Sub Calendar1_Click()
Range("A1").Value = Calendar1.Value
Unload UserForm1

End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
npmdc09
2011-02-23 · TA获得超过742个赞
知道小有建树答主
回答量:600
采纳率:0%
帮助的人:0
展开全部
For i = 1 To 100
Sheets("sheet" & i).Activate
Range("A1:F1").Copy Sheets("汇总").Range("A" & i)
Next i
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式