根据 sheet 1 中输入的数据自动填充 sheet 2 中的日期和用户名
Auto-populate date and username in sheet 2 based on data input in sheet 1
我在 VBA 方面相对缺乏经验,所以我希望我的问题能快速解决所有高手问题:
背景
我有一个用作数据输入文件的文件,不同的人在不同的列和不同的行中插入数据。我以前在同一个 sheet 上有一个 "sign-off" 部分,其中一个单元格会自动填充用户的用户名和日期。所以当用户量大的时候,1)由谁,2)在什么时间插入文件,就一目了然了。
我需要什么帮助
为了减少关于同一个 sheet 的信息量,我现在想在另一个 sheet 上有 "sign-off" 部分。 IE。例如,当 Steve 在 Sheet 1 中的单元格 F:15 和 G:34 中插入数据时,我希望自动填充他的用户名和日期在 Sheet 2.
中的相同单元格中(即 F:15 和 G:34)
数据输入范围
在 Sheet 1 中,从第 3 列到第 36 列和第 4 行到第 44 行。为了简单起见,我将使 Sheet 2 看起来与 Sheet 1 完全相同。因此Sheet 上的相同 "output" 范围 2.
当前代码
这是我的旧代码,我需要重写帮助,以便用户名和日期在 Sheet 2:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
If Target.Column >= 3 And Target.Column <= 36 And Target.Row >= 4 And Target.Row <= 44 Then
For Each c In Target
If c.Value = "" Then
c.Offset(0, -6).Value = ClearContents
Else
c.Offset(0, -6).Value = Environ("username") & " " & Date
End If
Next c
End If
非常感谢您的帮助!
只需要将值显式赋值给Sheet 2.见下文。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
If Target.Column >= 3 And Target.Column <= 36 And Target.Row >= 4 And Target.Row <= 44 Then
Dim ws2 as Worksheet
Set ws2 = Worksheets("Sheet2")
For Each c In Target
If c.Value = "" Then
ws2.Range(c.Address).ClearContents
Else
ws2.Range(c.Address).Value = Environ("username") & " " & Date
End If
Next c
End If
我在 VBA 方面相对缺乏经验,所以我希望我的问题能快速解决所有高手问题:
背景 我有一个用作数据输入文件的文件,不同的人在不同的列和不同的行中插入数据。我以前在同一个 sheet 上有一个 "sign-off" 部分,其中一个单元格会自动填充用户的用户名和日期。所以当用户量大的时候,1)由谁,2)在什么时间插入文件,就一目了然了。
我需要什么帮助 为了减少关于同一个 sheet 的信息量,我现在想在另一个 sheet 上有 "sign-off" 部分。 IE。例如,当 Steve 在 Sheet 1 中的单元格 F:15 和 G:34 中插入数据时,我希望自动填充他的用户名和日期在 Sheet 2.
中的相同单元格中(即 F:15 和 G:34)数据输入范围 在 Sheet 1 中,从第 3 列到第 36 列和第 4 行到第 44 行。为了简单起见,我将使 Sheet 2 看起来与 Sheet 1 完全相同。因此Sheet 上的相同 "output" 范围 2.
当前代码 这是我的旧代码,我需要重写帮助,以便用户名和日期在 Sheet 2:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
If Target.Column >= 3 And Target.Column <= 36 And Target.Row >= 4 And Target.Row <= 44 Then
For Each c In Target
If c.Value = "" Then
c.Offset(0, -6).Value = ClearContents
Else
c.Offset(0, -6).Value = Environ("username") & " " & Date
End If
Next c
End If
非常感谢您的帮助!
只需要将值显式赋值给Sheet 2.见下文。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
If Target.Column >= 3 And Target.Column <= 36 And Target.Row >= 4 And Target.Row <= 44 Then
Dim ws2 as Worksheet
Set ws2 = Worksheets("Sheet2")
For Each c In Target
If c.Value = "" Then
ws2.Range(c.Address).ClearContents
Else
ws2.Range(c.Address).Value = Environ("username") & " " & Date
End If
Next c
End If