需要有关自动用户名和时间的帮助

时间:2019-05-15 08:44:42

标签: excel vba

我正在使用一个Excel,其中需要获取两个条目示例的自动用户名和时间 1.如果我在第2列中插入一个值,则需要在“ A”和“ O”单元格中输入用户名和时间 2.在同一Excel工作表中,再次为第(7)列的条目输入日期,并在“ I”和“ N”单元格中输入用户名

我的代码只适用于单点操作,我对如何使用两次感到困惑。

检查我尝试提供的代码

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim rng As Range, c As Range
    Set rng = Application.Intersect(Target, Me.Columns(2))
    If rng Is Nothing Then Exit Sub
    For Each c In rng.Cells
        If Len(c.Value) > 0 Then
            If Len(c.Offset(0, -1).Value) = 0 Then
                With c.EntireRow
                    .Cells(1, "A").Value = Now()
                    '.Cells(1, "B").Value = Date
                    .Cells(1, "O").Value = Environ("username")
                End With
            End If
        End If

    Set rng = Application.Intersect(Target, Me.Columns(7))
    If rng Is Nothing Then Exit Sub
    For Each c In rng.Cells
        If Len(c.Value) > 0 Then
            If Len(c.Offset(0, -1).Value) = 0 Then
                With c.EntireRow
                    .Cells(1, "I").Value = Now()
                    '.Cells(1, "B").Value = Date
                    .Cells(1, "N").Value = Environ("username")
                End With
            End If
        End If
    Next c
End Sub

2 个答案:

答案 0 :(得分:1)

有问题的行是@ConversationScoped public class SomeBeanUI implements Serializable { // Simplified example... @Inject private SomeFacade facade; private Object anySerializable; @Transactional public void save() { // ... } } ,因为如果If rng Is Nothing Then Exit Sub不在第2列中,它将退出sub并且永远不会到达第7列的第二个测试。

因此,请改用Target

If Not rng Is Nothing Then

答案 1 :(得分:0)

如果我做对了,这对我有用:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Column = 2 Then
        If Me.Cells(Target.Row, 1) = vbNullString Then Me.Cells(Target.Row, 1) = Now()
        If Me.Cells(Target.Row, 15) = vbNullString Then Me.Cells(Target.Row, 15) = Environ("username")
    ElseIf Target.Column = 7 Then
        If Me.Cells(Target.Row, 9) = vbNullString Then Me.Cells(Target.Row, 9) = Now()
        If Me.Cells(Target.Row, 14) = vbNullString Then Me.Cells(Target.Row, 14) = Environ("username")
    End If

End Sub

我不确定您是否希望日志记录位于要插入数据的同一行中,还是始终将其重写在同一单元格中。