I am getting a compile error: ambiguous name detected: worksheet_change error because of two (2) Private Sub Worksheet_Change(ByVal Target As Range) function in the same code. Would like the Private Sub Worksheet_Change(ByVal Target As Range) fixed to overcome the error message. See code below for your convenience.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
With Target
If .Count > 1 Then GoTo next_part
If .Column <> 2 And .Column <> 11 Then GoTo next_part
Application.EnableEvents = False
'***************for Column A changes**************
If .Column = 2 Then
If IsEmpty(.Value) Then
.Offset(0, 2).ClearContents
Else
With .Offset(0, 2)
.NumberFormat = "dd mmm h:m:ss AM/PM"
.Value = Now
End With
End If
'**********for column K changes*********************
ElseIf .Column = 11 Then
If IsEmpty(.Value) Then
.Offset(0, -4).ClearContents
.Offset(0, -3).ClearContents
Else
'**********for column G changes***********************
With .Offset(0, -4)
.NumberFormat = "hh:mm:ss AM/PM"
.Value = Time
End With
'**********for column H changes***********************
With .Offset(0, -3)
.NumberFormat = "@"
.Value = Format(Str$(Date), "dd mmm YYYY -(ddd)")
End With
End If
End If
Application.EnableEvents = True
End With
next_part:
If Intersect(Target, Range("K:K")) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Application.EnableEvents = False
Dim orderNum As Range
On Error GoTo exitcode
If Target <> "" Then
Set orderNum = Sheets("Database").Columns(11).Find(Target, LookIn:=xlValues, LookAt:=xlWhole)
If orderNum Is Nothing Then
Target.EntireRow.Copy Sheets("Database").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
Else
Target.EntireRow.Copy Sheets("Database").Cells(orderNum.Row, 1)
End If
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
Exit Sub
exitcode:
Application.EnableEvents = True
End Sub
Private Sub Worksheet_Change(ByVal Target As Range): Dim S As String, r As Long: r = Target.Row
'When you first open the workbook:E6, F6, I6, J6, K6, L6, M6 and N6 - these cells should be blank/empty instead of the code auto stamping I6= Other, J6 = Other and K6=Other
'When I manually delete one of the cells (for example in either I, J, or K, all values in I, K and J should be deleted/blank
If Range("e" & r) = "" And Range("f" & r) = "" And Range("I" & r) = "" And Range("J" & r) = "" And Range("K" & r) = "" Then
Exit Sub
End If
If Range("e" & r) <> "" And Range("f" & r) = "" And Range("I" & r) = "" And Range("J" & r) = "" And Range("K" & r) = "" Then
Exit Sub
End If
If Range("f" & r) <> "" And Range("I" & r) = "" And Range("J" & r) = "" And Range("K" & r) = "" Then
Application.EnableEvents = False
Range("I" & r) = "Other": Range("J" & r) = "Other": Range("K" & r) = "Other"
S = Range("F" & r)
If Range("e" & r) <> "" Then
S = Range("F" & r) & " - " & Range("E" & r)
GoTo exitHandler
End If
End If
If Range("L" & r) <> "" Then S = Range("L" & r)
If Not Intersect(Range("j:k"), Target) Is Nothing And r >= 6 Then
If ((Range("j" & r) <> "") * (Range("K" & r) <> "")) Then
Range("M" & r) = Range("N" & r)
Range("N" & r) = "apple": Range("M" & r) = Range("N" & r)
If InStr(1, S, Range("j" & r)) = 0 And InStr(1, S, Range("k" & r)) = 0 Then
If S <> "" Then
S = S & ", " & Range("J" & r) & " " & Range("K" & r)
ElseIf S = "" Then
S = S & " " & Range("J" & r) & " " & Range("K" & r): End If: End If
Application.EnableEvents = False
Range("L" & r) = Trim(S)
Else
Application.EnableEvents = False
Range("L" & r) = ""
End If: GoTo exitHandler
End If
On Error GoTo exitHandler
If Target.Count > 1 Or Target = "" Then GoTo exitHandler
If S <> "" And Range("I" & r) <> "Other" And InStr(1, S, Range("I" & r)) = 0 Then S = Trim(Range("I" & r) & " " & Trim(S))
If Range("E" & r) <> "" And Range("F" & r) <> "Accepted" Then
If InStr(1, S, Range("E" & r)) = 0 Then
If S = "" Then
S = Range("F" & r) & " - " & Range("E" & r)
Else: S = S & " - " & Range("E" & r): End If: End If: End If
exitHandler:
Application.EnableEvents = False
Range("L" & r) = S
If Range("K" & r) <> "Other" And Range("J" & r) <> "Other" And Range("I" & r) <> "Other" And Range("E" & r) <> "" Then _
Range("F" & r) = Range("L" & r)
Application.EnableEvents = True
End Sub
Bookmarks