2017-09-04 78 views
0

我有兩個工作Worksheet_Change代碼,我想在同一張工作表上使用它們兩個。當我單獨使用它們時,它們都起作用,但是當我一起使用它們時,它們不會。我試圖粘貼兩個不同的代碼,但我得到一個模糊的名稱檢測到錯誤。我也嘗試過使用elseif,但其中沒有一個能夠工作。 兩個代碼:Excel宏合併兩個Worksheet_Change代碼

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Not Intersect(Range("O:O"), Target) Is Nothing Then 
     Cells(Target.Row, 17).Value = Date 
    End If 
End Sub 

Private Sub Worksheet_Change(ByVal Target As Excel.Range) 
    If Target.Column = 15 Then 
     Range("P" & Target.Row).Value = Target.Value + Range("P" & Target.Row).Value 
     Application.EnableEvents = False 
     Target.Value = "" 
     Application.EnableEvents = True 
    End If 
End Sub 

謝謝您的幫助

回答

0

你可以把兩者workshett變化事件在同一子

Private Sub Worksheet_Change(ByVal Target As Range) 
     If Not Intersect(Range("O:O"), Target) Is Nothing Then 
      Cells(Target.Row, 17).Value = Date 
     End If 

     If Target.Column = 15 Then 
      Range("P" & Target.Row).Value = Target.Value + Range("P" & Target.Row).Value 
      Application.EnableEvents = False 
      Target.Value = "" 
      Application.EnableEvents = True 
     End If 
    End Sub 
+0

謝謝你的工作! –

0

試試吧像這樣...

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.CountLarge > 1 Then Exit Sub 
    If Not Intersect(Range("O:O"), Target) Is Nothing Then 
     Application.EnableEvents = False 
     Cells(Target.Row, 17).Value = Date 
     Range("P" & Target.Row).Value = Target.Value + Range("P" & Target.Row).Value 
     Target.Value = "" 
     Application.EnableEvents = True 
    End If 
End Sub 
+0

非常感謝。它也在工作。 –

+0

@AndrásKrämer你注意到你接受的答案和我提出的答案有什麼不同嗎?如果兩種解決方案都能正常工作,對您來說不應該很重要,重要的是,應該如何正確處理事件代碼。如果您想在不需要任何幫助的情況下編寫下一個事件代碼,那麼從您提出的代碼中學習的內容太多了。 :) – sktneer