下面这段代码的作用是在G列(第7列/数量)中输入大于0的数据,在C列(第3列/订单时间)中自动填入时间的代码。在实际使用中,我还想让该代码具备以下功能:
1、在G列输入数据时,自动检测A列的客户名称是不是相同(下面的单元格是不是等于上面的单元格。如果相同,在G列输入数据时,下面的订单时间等于上面的订单时间,如A3=A2,那么C3等于C2;如果不同,在G列输入数据时,下面的订单时间不等于上面的订单时间,而等于系统时间,时间一旦输入,就不变,如A5不等于A4,在G5列输入数据时,C5等于系统当时时间)
2.、另外我还想做到如果C2原来有时间在里面,无论在G列中输入何数据,该时间都不会变,除非手工更改
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 Or Target.Cells.Count > 1 Then Exit Sub
Application.EnableEvents = False
Select Case Target.Column
Case Is = 7
If Target.Value > 0 Then
With Target.Offset(0, -4)
.Value = Now
.NumberFormatLocal = "yyyy-m-d h:mm;@"
End With
End If
End Select
Application.EnableEvents = True
End Sub
您解决了我的第2个问题,请问第一个问题该怎么办,下面的代码可以做到第一条要求,可我不没法合并2条代码,您能帮我吗
If Cells(Target.Row, 1) = Cells(Target.Row - 1, 1) Then
Cells(Target.Row, 3) = Cells(Target.Row - 1, 3)
Else
Cells(Target.Row, 3) = Now() '如果要精确到小时 分 秒 就将Date 改为 Now()
End If
End If '本段是C列订单日期自动输入根据客户名称
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 Or Target.Cells.Count > 1 Then Exit Sub
Application.EnableEvents = False
Select Case Target.Column
Case Is = 7
If Target.Value > 0 Then
With Target.Offset(0, -4)
If Target.Offset(0, -6) = Target.Offset(-1, -6) Then .Value = Target.Offset(-1, -4).Value
If .Value > 0 Then
Else
.Value = Now
.NumberFormatLocal = "yyyy-m-d h:mm;@"
End If
End With
End If
End Select
Application.EnableEvents = True
End Sub