当用户在特定列范围内输入数据时,VBA 代码能否更新 Excel 工作表列中的单元格?

Can VBA code update a cell in a column of an Excel worksheet when a user enters data in a specific column range?

我有一个 Excel 工作表,它有 12 列宽和许多行深。我正在尝试编写一个 Worksheet_Change Sub,它将导致工作表使用 Now 函数自动将当前 Date/Time 放入数据已更改的同一行中的列 L(或 12)在 A-K 列或 1 到 11 列的单元格中。

到目前为止,我已经尝试使用 Offset 函数来完成此操作,但我只能在进行相对更新而不是部分绝对更新时找到成功。我尝试使用 Choose 函数来根据用户定位的单元格替换列偏移的偏移函数变量,但我也无法让它工作。现在我正在尝试使用它,但无济于事:

Sub Worksheet_Change(ByVal Target As Range)
Dim WorkRng As Range

Offst As Integer
End Type
Set WorkRng = Range("A:K")
If Not Application.Intersect(WorkRng, Range(Target.AddressLocal)) _
Is Nothing Then
If Target.Column = 1 Then Offst = 11
ElseIf Target.Column = 2 Then Offst = 10
ElseIf Target.Column = 3 Then Offst = 9
ElseIf Target.Column = 4 Then Offst = 8
ElseIf Target.Column = 5 Then Offst = 7
ElseIf Target.Column = 6 Then Offst = 6
ElseIf Target.Column = 7 Then Offst = 5
ElseIf Target.Column = 8 Then Offst = 4
ElseIf Target.Column = 9 Then Offst = 3
ElseIf Target.Column = 10 Then Offst = 2
ElseIf Target.Column = 11 Then Offst = 1
End If
    With Offst
            Target.Offset(0, Offst).Value = Now
            Target.Offset(0, Offst).NumberFormat = "dd-mmm-yyyy AM/PM"
    End With
End Sub

我对 VBA 非常了解,我没有多少时间可以学习。我已经在互联网上搜索了很多,我想我很擅长用尽搜索引擎,但我找不到与我的情况直接相关的东西。我只能找到人们更新单列数据而不是范围的例子。

非常感谢任何帮助!感谢您抽出宝贵时间!

不需要偏移量。您可以对 L 进行硬编码,并使用 IntersectTarget.EntireRow 来更新 L 列中的相应行。

简化后,整个代码可以是:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Me.Range("A:K"), Target) Is Nothing Then Exit Sub

    Intersect(Me.Columns("L"), Target.EntireRow).Value = Now
    Intersect(Me.Columns("L"), Target.EntireRow).NumberFormat = "dd-mmm-yyyy AM/PM"
End Sub