Requirement:
The user is trying to write a macro that enters a Vlookup into a cell only if a corresponding tab exists on another workbook to compare it to. The user is trying doing this to try to avoid the 'Select Sheet' Dialogue from appearing if there is no corresponding sheet on the other workbook.
This is what the user has so far (the Function comes from here https://stackoverflow.com/questions/...twsname-exists)
Sub MySub() Dim PreviousReport As String If SheetExists(PreviousReport & ActiveSheet.Name) Then LastRow = .Cells(Rows.Count, 3).End(xlUp).Row ActiveSheet.Range("I7:I" & LastRow).Value = "=IFERROR(IF(VLOOKUP($B7,'[" & PreviousReport & "]" _ & ActiveSheet.Name & "'!$B:$J,8,0)="""","""",VLOOKUP($B7,'[" & PreviousReport & "]" & ActiveSheet.Name & "'!$B:$I,8,0)),"""")" Else End If End Sub Function SheetExists(SheetToFind As String) As Boolean Dim Sheet As Object SheetExists = False For Each Sheet In Worksheets If SheetToFind = Sheet.Name Then SheetExists = True Exit Function End If Next Sheet End Function
The code works in that it doesn't enter a Vlookup if the sheet doesn't exists but it also doesn't recognise if the sheet does exist so the user thinks the issue is with setting the SheetToFind.
Solution:
Try this
Sub MySub() Dim PreviousReport As String, LastRow As Long PreviousReport = "Book2" '// CHANGE THIS TO THE NAME OF THE WORKBOOK THAT NEEDS TO BE SEARCHED If SheetExists(PreviousReport, ActiveSheet.Name) Then With ActiveSheet LastRow = .Cells(.Rows.Count, 3).End(xlUp).Row .Range("I7:I" & LastRow).Value = "=IFERROR(IF(VLOOKUP($B7,'[" & PreviousReport & "]" _ & ActiveSheet.Name & "'!$B:$J,8,0)="""","""",VLOOKUP($B7,'[" & PreviousReport & "]" & ActiveSheet.Name & "'!$B:$I,8,0)),"""")" End With Else MsgBox PreviousReport & " does not have a sheet named " & ActiveSheet.Name, 64, "Previous Report" End If End Sub Function SheetExists(wb As String, sh As String) As Boolean Dim ws As Object SheetExists = 0 For Each ws In Workbooks(wb).Sheets If sh = ws.Name Then SheetExists = 1 Exit Function End If Next End Function
Obtained from the OzGrid Help Forum.
Solution provided by KjBox.
See also: Index to Excel VBA Code and Index to Excel Freebies and Lesson 1 - Excel Fundamentals and Index to how to… providing a range of solutions and Index to new resources and reference sheets
See also:
How to use VBA to enter formula to a cell without activating the sheet |
How to change fill color of autoshapes based on result of formula in a cell |
How to use Formula: =IF ERROR |
How to use Standard Deviation Formula in Excel |
Click here to visit our Free 24/7 Excel/VBA Help Forum where there are thousands of posts you can get information from, or you can join the Forum and post your own questions.