我正在使用一个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
答案 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
我不确定您是否希望日志记录位于要插入数据的同一行中,还是始终将其重写在同一单元格中。