我有一个excel文件,它实际上是我定期更新的数据库。每次进行更新时,我都希望过滤当天输入的数据。
所以我在线上找到了这个宏,对我的应用程序真的很有用。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim C As Range, D As Range, Inte As Range, r As Range
Set C = Range("C:C")
Set Inte = Intersect(C, Target)
If Inte Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each r In Inte
r.Offset(0, 1).Value = Date
Next r
Application.EnableEvents = True
End Sub
它为我提供了单元格D修改单元格C时的日期。问题是,我只希望在确实将文本放入单元格C中时显示日期。有时我只插入一行,但在单元格C中为空,则宏将其视为事件。然后,它在单元格D中给了我日期,但是我什么都没写。
我想这应该是一条非常简单的行,用If Not IsEmpty(C.Value) Then
添加到宏中的某个位置,但是由于它不起作用,所以我无法将其放在正确的位置... < / p>
在此先感谢您提供的任何帮助。祝大家周末愉快!
答案 0 :(得分:0)
尝试
Private Sub Worksheet_Change(ByVal Target As Range)
Dim C As Range, D As Range, Inte As Range, r As Range
Set C = Range("C:C")
Set Inte = Intersect(C, Target)
If Inte Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each r In Inte
If Not IsEmpty(r.Value) Then ' line added
r.Offset(0, 1).Value = Date
Else
r.Offset(0, 1).Value = ""
End If
Next r
Application.EnableEvents = True
End Sub
答案 1 :(得分:0)
使用SpecialCells不仅可以对空单元格进行操作
您不需要循环播放
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Inte As Range
Set Inte = Intersect(Range("C:C"), Target)
If Inte Is Nothing Then Exit Sub
Application.EnableEvents = False
Inte.SpecialCells(xlCellTypeConstants).Offset(0, 1).Value = Date
Application.EnableEvents = True
End Sub