Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I am trying to combine two different Worksheet_Change codes. Both
accomplish different things, but it appears that anyway I combine them, either one works and the other doesn't or neither do. I am not experienced enough to know where the conflict is. Can anyone help? Thanks in advance magmike PS: I am assuming that they cannot be seperately listed. Code 1 ---------------------------------- Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim n As Long, s As String On Error GoTo enditall If Target.Column = 5 Then '1 is column A Application.EnableEvents = False n = Target.Row: s = UCase$(Target) With Range("N" & n) If IsEmpty(.Value) Then .Value = Format(Date, "mm-dd-yyyy") End If End With Select Case s Case "IN", Range("O" & n) = "" Range("O" & n) = Format(Date, "mm-dd-yyyy") Case "QUOTE", Range("P" & n) = "" Range("P" & n) = Format(Date, "mm-dd-yyyy") Case "EMAIL", Range("P" & n) = "" Range("P" & n) = Format(Date, "mm-dd-yyyy") Case "SENT", Range("Q" & n) = "" Range("Q" & n) = Format(Date, "mm-dd-yyyy") Case "REQ", Range("R" & n) = "" Range("R" & n) = Format(Date, "mm-dd-yyyy") Case "DONE", Range("S" & n) = "" Range("S" & n) = Format(Date, "mm-dd-yyyy") End Select Range("T" & n) = Format(Date, "mm-dd-yyyy") enditall: Application.EnableEvents = True End If End Sub Code 2 ---------------------- ' Downloaded from www.contextures.com '--------------------------------------------------------------------------------------- ' Procedure : Worksheet_Change ' Author : Roger Govier, Technology 4 U ' Date : 09-Mar-2008 ' Purpose :To enable filtering without having to use the dropdown arrows ' :Especially useful in XL2007 where you need to deselect all before making ' :a selection. Also save the need to invoke the Custom dialogue ' :Highlighting of cells with the criteria allows easy view of what selections have been made. ' :The code was inspired by a discussion with Dr Peter Grebenik, Brookes University ' :Oxford, who had used something similar in his work. '--------------------------------------------------------------------------------------- ' Private Sub Worksheet_Change(ByVal Target As Range) Dim rownum As Long, colnum As Long Dim tblname As String, mylist As Object Dim caret As Long, caret2 As Long Dim crit1 As String, crit2 As String, optype As String, marker As String 'Set this next value to the row number above your filter Const testrow = 1 'Change the marker to something other than the caret ^ if required marker = "^" On Error GoTo Worksheet_Change_Error rownum = Target.Row colnum = Target.Column On Error Resume Next If Target.Count 1 Then ActiveSheet.ShowAllData Target.Interior.ColorIndex = -4142 'clear colour from range GoTo cleanup End If If rownum < testrow Then GoTo cleanup crit1 = Target.Value caret = InStr(Target, marker) caret2 = InStr(Target, marker & marker) If caret Then crit1 = Trim(Left(Target.Value, caret - 1)) crit2 = WorksheetFunction.Substitute(Mid(Target.Value, caret + 1), marker, "") optype = xlAnd End If If caret2 Then optype = xlOr End If If Val(Application.Version) < 11 Then GoTo earlyversion Set mylist = ActiveSheet.ListObjects If mylist.Count Then ' A List or Table Object is used tblname = mylist(1).Name If Cells(rownum, colnum).Value = "" Then ' No filter choice mylist(tblname).Range.AutoFilter Field:=colnum GoTo cleanup ElseIf caret Then mylist(tblname).Range.AutoFilter Field:=colnum, _ Criteria1:=crit1, Operator:=optype, Criteria2:=crit2 GoTo cleanup Else mylist(tblname).Range.AutoFilter Field:=colnum, _ Criteria1:=crit1 GoTo cleanup End If ' There is no List object, it is a Range so treat the same as ' earlier versions of Excel End If earlyversion: 'This version of Excel does not support List Objects If Cells(rownum, colnum).Value = "" Then Selection.AutoFilter Field:=colnum ElseIf caret Then Selection.AutoFilter Field:=colnum, _ Criteria1:=crit1, Operator:=optype, Criteria2:=crit2 Else Selection.AutoFilter Field:=colnum, Criteria1:=crit1 End If cleanup: 'keep focus on same cell and set colour index if Selection is made Range(Target.Address).Activate If ActiveCell < "" Then ActiveCell.Interior.ColorIndex = 40 'change to colour of your choice Else ActiveCell.Interior.ColorIndex = -4142 End If On Error GoTo 0 Exit Sub Worksheet_Change_Error: MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure Worksheet_Change of VBA Document Sheet4" ActiveCell.Interior.ColorIndex = -4142 On Error GoTo 0 End Sub |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Please help combine two simple codes! | Excel Programming | |||
Combine two Codes into one Sheet | Excel Programming | |||
VBA Codes to combine PDF files | Excel Programming |