簡體   English   中英

如何在一個工作表中合並兩個私有子工作表_Change(按ByVal目標作為范圍)?

[英]How Does One Combine two Private Sub Worksheet_Change(ByVal Target As Range) in One Work Sheet?

免責聲明:我是VBA的新手,所以顯而易見的事情可能會浮現在我頭上。

我正在嘗試設置2列,當其旁邊的列僅在該工作表中接收到新數據時,該列會以當天的日期自動更新。

我試着用有限的知識創建新變量,以便它有2條“行”(如果可以的話),但是它只是完全停止工作。

有什么方法可以“復制”下面的代碼,以使O列在P列更新時以今天的日期更新,而E列在D更改時也以今天的日期更新? 如果可能的話,當D中的文本為“ N / A”時,如果E列不更新,那將是很好的選擇

任何幫助或指針表示贊賞。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim WorkRng As Range
    Dim Rng As Range
    Dim xOffsetColumn As Integer
    Set WorkRng = Intersect(Application.ActiveSheet.Range("P:P"), Target)
    xOffsetColumn = 1
    If Not WorkRng Is Nothing Then
        Application.EnableEvents = False
        For Each Rng In WorkRng
            If Not VBA.IsEmpty(Rng.Value) Then
                Rng.Offset(0, xOffsetColumn).Value = Now
            Else
                Rng.Offset(0, xOffsetColumn).ClearContents
            End If
        Next
        Application.EnableEvents = True
    End If
End Sub

您將需要進行檢查,以便您只有1 worksheet_change ,但可以根據目標范圍進行單獨的操作。 嘗試類似:

Select Case Target.Column
    Case 15
        'that stuffs
    Case 16
        'that other stuffs
End Select

edtit1是的,@ GSerg,沒錯,已更新...

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False

    UpdateNextColumnIfNeeded Application.Intersect(Me.Range("P:P"), Target)
    UpdateNextColumnIfNeeded Application.Intersect(Me.Range("D:D"), Target)

    Application.EnableEvents = True
End Sub


Private Sub UpdateNextColumnIfNeeded(ByVal WorkRng As Range)
  If WorkRng Is Nothing Then Exit Sub

  Dim Rng As Range

  For Each Rng In WorkRng.Cells
      If IsEmpty(Rng.Value) Then
          Rng.Offset(0, 1).ClearContents
      Else
          Rng.Offset(0, 1).Value = Now
      End If
  Next
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM