![](/img/trans.png)
[英]Combine two Private Sub Worksheet_Change(ByVal Target As Range)
[英]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.