Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi,
Functionality of below macro : Search for the selected value from the data validation list(from Sheet3 Column A) in the entire workbook(except Sheet3) and if found then 1. Shows message "Value already exists in sheet" and select that cell where the value exists 2. Checks for its corresponding values in Sheet3 column B. Say if its apple then shows message "this is be on apple sheet" xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxx Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim wsLoop As Worksheet Dim FoundCell As Range Dim myAddr As String Dim TopRng As Range Dim BotRng As Range Dim BigRng As Range Dim LastRow As Long Dim FirstRow As Long Dim res As Variant myAddr = "A2:A2000" With Sh.Range(myAddr) FirstRow = .Row LastRow = .Rows(.Rows.Count).Row End With If Intersect(Target, Sh.Range(myAddr)) Is Nothing Then Exit Sub End If If Target.Cells.Count 1 Then Exit Sub 'single cell at a time End If If Target.Value = "" Then 'do nothing Else For Each wsLoop In ThisWorkbook.Worksheets Select Case LCase(wsLoop.Name) Case Is = LCase("Sheet3") 'skip it Case Else Set BigRng = wsLoop.Range(myAddr) If LCase(wsLoop.Name) = LCase(Sh.Name) Then With BigRng If Target.Row = FirstRow Then 'in row 2, don't include it Set BigRng = .Resize(.Rows.Count - 1).Offset(1, 0) Else If Target.Row = LastRow Then 'in row 200, don't include it Set BigRng = .Resize(.Rows.Count - 1) Else Set TopRng = wsLoop.Range("A" & FirstRow _ & ":A" & Target.Row - 1) Set BotRng = wsLoop.Range("A" & Target.Row + 1 _ & ":A" & LastRow) Set BigRng = Union(TopRng, BotRng) End If End If End With End If With BigRng Set FoundCell = .Cells.Find(what:=Target.Value, _ After:=.Cells(1), _ LookIn:=xlValues, _ LookAt:=xlWhole, _ SearchOrder:=xlByRows, _ SearchDirection:=xlNext, _ MatchCase:=False) End With If FoundCell Is Nothing Then 'not found Else MsgBox "That entry already exists he" & vbLf _ & FoundCell.Address(external:=True) Application.EnableEvents = False Target.ClearContents Application.Goto FoundCell, Scroll:=True 'or false?? Application.EnableEvents = True Exit For End If End Select Next wsLoop res _ = Application.VLookup(Target.Value, Worksheets("Sheet3").Range ("A:R"), 18, False) If IsError(res) Then 'no message Else If LCase(Sh.Name) = LCase(res) Then 'do nothing Else MsgBox Target.Value & " should be on " & res Application.EnableEvents = False Target.Value = "" Application.EnableEvents = True End If End If End If End Sub xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxx Requirement : Depending upon the selection, i want the other columns(says C,D,E) in the sheet to display sheet3 column(say D,G,H) values |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Sum values in a column depending on start time in another column | New Users to Excel | |||
change controlsource for textbox depending on combobox selection | Excel Programming | |||
Change InputBox Range Selection to Column Letter Selection | Excel Programming | |||
Sum values depending in values next column | Excel Discussion (Misc queries) | |||
Change from Column Selection to Cell Selection | Excel Programming |