在EXCEL VBA写代码 要求是:比如我在A列输入随便内容,B列就自动填入输入内容时的日期

且填入时间只跟输入内容时的时间一致.反过来讲.比如想在C列输入内容,D列自动填入输入内容时的时间,VBA代码又该怎么写.(填入的时候不随当前时间变化,就是说只能是A列或C列输入内容时那时候的时间)
还有,如果要让以上两个都成立时又要怎么写VBA (A或C列有输入内容时,B或D就会自动填入时间)

把代码粘贴到你要生成数据的表,这是使用单元格事件完成的,也就是说在A、C两列输入数据时,B、D就相应写入当前的日期和时间,且这个时间不会随系统时间改变而改变,只是输入数据的时间。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim iR&, x&
If Target.Column = 1 Or Target.Column = 3 Then
iR = Target.Row
x = Target.Column
Cells(iR, x + 1) = FormatDateTime(Now(), 0)
End If
End Sub
或者用
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Or Target.Column = 3 Then
Cells(Target.Row, Target.Column + 1) = FormatDateTime(Now(), 0)
End If
End Sub
不明白怎么用可HI我。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2021-02-12
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
Dim xx As String
xx = Target.Row
Range("B" + xx) = Date
End If
End Sub
以上代码实现了在A列写入内容,在B列显示,写A列的时间,C列写内容,D列写入时间,以此类推本回答被提问者采纳
第2个回答  2017-01-03
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Count = 1 Then
If Target.Column = 1 Then Target.Offset(, 1) = Now
End If
End Sub

按ALT +F11 进入VBE界面
将上面代码放入 thisworkbook 内即可
第3个回答  2011-02-28
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
For Each c In Target
If c.Column = 1 Or c.Column = 3 Then
If c.Value = "" Then
c.Offset(0, 1).Value = ""
Else
c.Offset(0, 1).Value = Now
End If
End If
Next
End Sub
---------
按ALT+F11,打开代码窗口,将上面的代码复制入其中,返回sheet表,就可以实现了
第4个回答  2016-12-11
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
Target.Offset(0, 1).Value = Date
End If
End Sub
相似回答