如何在VBA中重复这个函数?
How to repeat this function in VBA?
我现在在 Excel VBA:
中有这个功能
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count <> 1 Then Exit Sub
If Target.Address = Cells(1, 5).Address Then
Cells(1, 6) = Application.UserName
Cells(1, 7) = Now
Else
Debug.Print "This was not B1"
End If
End Sub
这非常适合一行中的一个单元格。现在我需要在 sheet 上多行使用它。我怎么做?当仅复制和更新单元格行中的参数时,我收到错误消息,指出事件名称不能使用两次。
我的最终解决方案是,对于此 sheet 中的所有 15 行,我都有此功能。
每个工作表只能有一个 SelectionChange
事件,因此您需要处理该事件中的所有内容。
如果您想做不同的事情,请使用:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.CountLarge <> 1 Then Exit Sub
If Target.Address = Cells(1, 5).Address Then
Cells(1, 6) = Application.UserName
Cells(1, 7) = Now
ElseIf Target.Address = … your other cell address … Then
'do something else
Else
Debug.Print "This was not B1"
End If
End Sub
如果您想对多行执行相同的操作,请执行以下操作:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.CountLarge <> 1 Then Exit Sub
If Not Intersect(Target, Me.Range(Me.Cells(1, 5), Me.Cells(10, 5))) Is Nothing Then
Target.Offset(ColumnOffset:=1) = Application.UserName
Target.Offset(ColumnOffset:=2) = Now
Else
Debug.Print "This was not B1"
End If
End Sub
这将从第 1 行 Me.Cells(1, 5)
到第 10 行 Me.Cells(10, 5)
起作用,并将用户名写入第 6 列,将时间写入该范围内第 5 列的选定行的第 7 列。
我现在在 Excel VBA:
中有这个功能Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count <> 1 Then Exit Sub
If Target.Address = Cells(1, 5).Address Then
Cells(1, 6) = Application.UserName
Cells(1, 7) = Now
Else
Debug.Print "This was not B1"
End If
End Sub
这非常适合一行中的一个单元格。现在我需要在 sheet 上多行使用它。我怎么做?当仅复制和更新单元格行中的参数时,我收到错误消息,指出事件名称不能使用两次。
我的最终解决方案是,对于此 sheet 中的所有 15 行,我都有此功能。
每个工作表只能有一个 SelectionChange
事件,因此您需要处理该事件中的所有内容。
如果您想做不同的事情,请使用:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.CountLarge <> 1 Then Exit Sub
If Target.Address = Cells(1, 5).Address Then
Cells(1, 6) = Application.UserName
Cells(1, 7) = Now
ElseIf Target.Address = … your other cell address … Then
'do something else
Else
Debug.Print "This was not B1"
End If
End Sub
如果您想对多行执行相同的操作,请执行以下操作:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.CountLarge <> 1 Then Exit Sub
If Not Intersect(Target, Me.Range(Me.Cells(1, 5), Me.Cells(10, 5))) Is Nothing Then
Target.Offset(ColumnOffset:=1) = Application.UserName
Target.Offset(ColumnOffset:=2) = Now
Else
Debug.Print "This was not B1"
End If
End Sub
这将从第 1 行 Me.Cells(1, 5)
到第 10 行 Me.Cells(10, 5)
起作用,并将用户名写入第 6 列,将时间写入该范围内第 5 列的选定行的第 7 列。