如何在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 列。