excel中的VBA修改问题

来源:百度知道 编辑:UC知道 时间:2024/09/23 05:54:02
有一段代码:
Private Sub DTPicker1_CloseUp()
'禁用事件,在将DTP控件的值更新到单元格时,防止Worksheet_Change被误激活
Application.EnableEvents = False
ActiveCell.Value = Me.DTPicker1.Value
Me.DTPicker1.Visible = False
'启用事件
Application.EnableEvents = True
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
'判断是否只选中了单个单元格
If Target.Count = 1 Then
'如果删除第三列的单元格内容,则隐藏DTP控件
If Target.Column = 3 And Target = "" Then
Me.DTPicker1.Visible = False
End If
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 1 Then
Application.EnableEvents = False
If Target.Column = 3 Then
With Me.DTPicker1
.Visible = True
'调整DTP控件的位置,使其显示在当前单元格之中
.Top = Target.Top
.L

在你这段代码中看不出来是输入一整列呀,只有以下这几句涉及输入:
If Target <> "" Then
'如果当前单元格已有内容,则设置DTP控件初始值为当前单元格日期,否则为系统当前日期
.Value = Target.Value
Else
.Value = Date
End If

DTPicker好像不是自带的控件吧,或者告诉我是在哪个控件库里的。

============================
没装QQ,用H!传吧。

============================
按以下改这两个地方就可以了。
1、
将Private Sub Worksheet_SelectionChange(ByVal Target As Range) 里的If Target.Column = 3 Then 改为If Target.Column = 3 And Target.Row = 1 Then

2、
将Private Sub Worksheet_Change(ByVal Target As Range) 里的If Target.Column = 3 And Target = "" Then 改为If Target.Column = 3 And Target.Row = 1 And Target = "" Then