Dim InsRng As String
'We deal with columns (E,F) 5 and 6 only
Select Case Target.Column
'======= User changes column 5 =======
Case 5
'Get the range of the row
StrtRng = Target.Offset(0, -4).Address(rowabsolute:=False, Columnabsolute:=False)
EndRng = Target.Offset(0, 3).Address(rowabsolute:=False, Columnabsolute:=False)
InsRng = StrtRng & ":" & EndRng
Select Case Target.Value
Case "INSERT: Qw"
InsertQwRow InsRng, Target
If (Target.Offset(-1, 1).Value = "BLANK") Then
'Set range to YELLOW
Range(InsRng).Interior.Color = RGB(255, 255, 0)
Target.Offset(0, -3).Value = Target.Offset(-1, -3).Value
ElseIf (Target.Offset(-1, 1).Value = "") Then
'Attention
Target.Offset(-1, 1).Interior.Color = RGB(255, 0, 255)
Else
'Set the range to CYAN
Range(InsRng).Interior.Color = RGB(0, 255, 255)
Target.Offset(0, -3).Value = Target.Offset(-1, -3).Value
End If
Case "INSERT: Sd"
InsertSdRow InsRng, Target
If (Target.Offset(0, 1).Value = "") Then
'Set range to RED
Range(InsRng).Interior.Color = RGB(255, 0, 0)
Target.Offset(-1, -3).Value = Target.Offset(-2, -3).Value
Target.Offset(-1, -2).Value = Target.Offset(-2, -2).Value
Target.Offset(-1, -1).Value = Target.Offset(-2, -1).Value
Formula = Target.Offset(-2, -4).Address(rowabsolute:=False)
Target.Offset(-1, 1).FormulaArray = "=" & Formula 'set source sampleid
Formula = Target.Offset(-2, 2).Address(rowabsolute:=False)
Target.Offset(-1, 2).FormulaArray = "=" & Formula 'set sampletype
Else
'Attention
Target.Offset(0, 1).Interior.Color = RGB(255, 0, 255)
End If
Case "** DELETE **" 'delete only Qw and Sd rows
If (Target.Interior.Color = RGB(0, 255, 255) Or _
Target.Interior.Color = RGB(255, 255, 0) Or _
Target.Interior.Color = RGB(255, 0, 0) Or _
Target.Interior.Color = RGB(255, 0, 255) Or _
Target.Offset(0, 1).Interior.Color = RGB(255, 0, 255)) Then
DeleteRow (InsRng)
Else
Target.Value = ""
End If
End Select
'======= User changes column 6 =======
Case 6
'Get the range of the row
StrtRng = Target.Offset(0, -5).Address(rowabsolute:=False, Columnabsolute:=False)
EndRng = Target.Offset(0, 2).Address(rowabsolute:=False, Columnabsolute:=False)
InsRng = StrtRng & ":" & EndRng
Select Case Target.Value
Case "BLANK"
If (Target.Offset(0, -1).Value = "Qw") Then
'Set range to YELLOW
Range(InsRng).Interior.Color = RGB(255, 255, 0)
Target.Offset(0, -4).Value = Target.Offset(-1, -4).Value
Else
'Attention
Target.Offset(0, -1).Interior.Color = RGB(255, 0, 255)
End If
Case ""
If (Target.Offset(0, -1).Value = "") Then
'Set range to NORMAL
Target.Offset(0, -5).Interior.Color = RGB(220, 220, 220)
Target.Offset(0, -4).Interior.Color = RGB(255, 255, 255)
Target.Offset(0, -3).Interior.Color = RGB(220, 255, 255)
Target.Offset(0, -2).Interior.Color = RGB(220, 220, 220)
Target.Offset(0, -1).Interior.Color = RGB(220, 220, 220)
Target.Interior.Color = RGB(220, 220, 220)
Target.Offset(0, 1).Interior.Color = RGB(220, 220, 220)
Target.Offset(0, 2).Interior.Color = RGB(220, 220, 220)
ElseIf (Target.Offset(0, -1).Value = "Sd") Then
'Set range to RED
Range(InsRng).Interior.Color = RGB(255, 0, 0)
Target.Offset(0, -4).Value = Target.Offset(-1, -4).Value
Target.Offset(0, -3).Value = Target.Offset(-1, -3).Value
Target.Offset(0, -2).Value = Target.Offset(-1, -2).Value
Target.Value = Target.Offset(-1, -5).Value
Formula = Target.Offset(-1, -5).Address(rowabsolute:=False)
Target.FormulaArray = "=" & Formula
Else
'Attention
Target.Offset(0, -1).Interior.Color = RGB(255, 0, 255)
End If
Case "B1", "B2"
If (Target.Offset(0, -1).Value = "Qw") Then
'Set range to CYAN
Range(InsRng).Interior.Color = RGB(0, 255, 255)
Target.Offset(0, -4).Value = Target.Offset(-1, -4).Value
Else
'Attention
Target.Offset(0, -1).Interior.Color = RGB(255, 0, 255)
End If
End Select
End Select
End Sub
The person who wrote this code is, obviously, an excel genius! I would try to adapt his workbook to what we need, but it's a lot more involved and quite surplus to requirements.
Bookmarks