繁体   English   中英

当用户在特定列范围内输入数据时,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?

我有一个 12 列宽、多行深的 Excel 工作表。 我正在尝试编写一个 Worksheet_Change Sub ,这将导致工作表使用 Now 函数自动将当前日期/时间放入列 L(或 12),该行中的数据在列 AK 的单元格中更改或 1 到 11。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM