使用VBA更新Excel 2019的列

时间:2019-03-06 12:56:39

标签: excel vba

我发现了这个VBA代码,该代码目前用日期/时间填充列E和F,并在检测到范围A2:D50中的变化时仅用日期/时间更新列F。它工作得很漂亮,感谢作者。 我想做的是:

  • 如果范围B2:B50发生变化,则填充col E。
  • 如果范围D2:D50发生变化,则填写col F。

我试图修改代码并可以填入col E,但是无法更新col F。

Private Sub Worksheet_Change(ByVal Target As Range)
    'Timestamp Data
    '   TeachExcel.com - Original Author

    Dim myTableRange As Range
    Dim myDateTimeRange As Range
    Dim myUpdatedRange As Range

    'Your data table range
    Set myTableRange = Range("A2:D50")

    'Check if the changed cell is in the data tabe or not.
    If Intersect(Target, myTableRange) Is Nothing Then Exit Sub

    'Stop events from running
    Application.EnableEvents = False

    'Column for the date/time
    Set myDateTimeRange = Range("E" & Target.Row)
    'Column for last updated date/time
    Set myUpdatedRange = Range("F" & Target.Row)

    'Determine if the input date/time should change
    If myDateTimeRange.Value = "" Then   
        myDateTimeRange.Value = Now 
    End If

    'Update the updated date/time value
    myUpdatedRange.Value = Now

    'Turn events back on
    Application.EnableEvents = True
End Sub

1 个答案:

答案 0 :(得分:1)

myTableRange设置为B2:B50。然后将您的IF语句更改为:If Not Intersect(Target, myTableRange) Is Nothing Then。如果Target在范围内,请执行步骤。如果Target不在该范围内,请在myTableRange中将D2:D50重置为Else。然后检查您的Target是否在该范围内。如果是这样,请执行您的步骤