Worksheet_change似乎没有触发

我有一个macros,并运行一个数据透视表,从表中复制一系列的单元格,然后将其粘贴到第二个工作表中。 说实话,现在我和VBA在一起,我对这个壮举很满意。 然而我有更多的事情要做。

我想要发生的事情是这样的:macros我将数据粘贴到A列中的第一个空单元格中。当发生这种情况时,我希望macrosinput今天的date(最好是使其成为永久的并且不会改变为明天明天的date)在列C的同一行中,在列D中的文本“IV020”。

在Sheet9中,我有以下代码(主要来自这里的post):

Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Dim aCell As Range On Error GoTo Whoa Application.EnableEvents = False If Not Intersect(Target, Columns(1)) Is Nothing Then If Not Target.Columns.Count > 1 Then For Each aCell In Target If aCell.Value <> "" And aCell.Offset(0, 2).NumberFormat = "" Then aCell.Offset(0, 2).Value = "=TODAY()" aCell.Offset(0, 3).Value = "IV020" End If Next Else MsgBox "Please paste in 1 Column" End If End If Letscontinue: Application.EnableEvents = True Exit Sub Whoa: MsgBox Err.Description Resume Letscontinue End Sub 

然而,当事情被粘贴或手动input列A时,什么都不会发生。

您不能有一个零长度string的Range.NumberFormat属性 。 即使您尝试手动添加一个,也会将其重置为常规

 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Columns(1)) Is Nothing Then 'don't do things until you have to On Error GoTo Whoa Application.EnableEvents = False Dim aCell As Range 'this processes all of the cells that were changes in column A For Each aCell In Intersect(Target, Columns(1)) 'If aCell.Value <> "" And aCell.Offset(0, 2).NumberFormat = "" Then If aCell.Value <> "" Then aCell.Offset(0, 2).Value = Date 'possibly Now but likely not "=TODAY()" aCell.Offset(0, 3).Value = "IV020" End If Next End If Letscontinue: Application.EnableEvents = True Exit Sub Whoa: MsgBox Err.Description Resume Letscontinue End Sub 

我做了一些小的改变; 你将不得不决定你想要做什么.NumberFormat问题。