Excel表格中如何输入时间的VBA代码

下面这段代码的作用是在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

第1个回答  推荐于2017-11-19
打开编辑器
双击sheet 1
输入如下代码:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row > 1 Then
If Cells(Target.Row - 1, 7) <> "" Then
If Cells(Target.Row, 7) <> "" Then
If Cells(Target.Row, 1) = "" Then
Cells(Target.Row, 1) = Cells(Target.Row - 1, 1)
End If
End If
End If
End If
End Sub
本回答被网友采纳
第2个回答  2011-06-05
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 .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追问

您解决了我的第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

本回答被提问者采纳
第3个回答  2017-11-19
在上面的程序里再加一些判断就行了。
相似回答