Message box before another macro

M

michaelberrier

I need to add a message box to the front end of a search macro that
will trigger based on certain criteria and, in the absence of those
criteria, allow the macro to proceed. Sounds like a simple
"IF..Then..Else", but I cannot get the syntax to agree, even after
pouring through this group and using previously suggested solutions.

I need this:

If Range("Q55") = "True" Then
MsgBox"blah blah blah"

Else RunMacro1

VB kicks back a "Type Mismatch" every time on the very first statement
here. I have tried the True with and without quotes, same result.

Entire code is below. Help is appreciated.

Sub Look_Here1()

If Range("Q55") = "true" Then
MsgBox "Check Driver's License Expiration Date", 48, "Exprired
Driver's License"

Else
Dim FoundCell As Range
Dim WhatFor As Variant
WhatFor = ActiveSheet.Cells(7, 2).Value

Set FoundCell = Range("B8:B990").Find(What:=WhatFor,
after:=ActiveCell, _
SearchDirection:=xlNext, searchorder:=xlByRows,
_
MatchCase:=False)

If FoundCell Is Nothing Then
Range("A7").Select
ActiveCell.FormulaR1C1 = "X"
Range("D7").Select

Else

FoundCell.Offset(0, -1).Select
ActiveCell.FormulaR1C1 = "X"
Selection.Offset(0, 4).Select

End If
End If


End Sub
 
D

Dave Peterson

What's in Q55?

maybe...

if lcase(range("q55").text) = "true" then

I'm guessing that you had an error #ref, #n/a, div/0, ... in that cell.
 
M

michaelberrier

Q55 is a True/False based on a date entered in another cell.

Basically, if that date is after today, then Q55 is false and the macro
completes. Conversely, if Q55 is True, then I want the Message Box to
display.

Thanks.
 
D

Dave Peterson

That code is looking at the activesheet.

Are you sure that's the one you wanted?

maybe adding:

msgbox range("q55").text

would help you debug the problem.
 
M

michaelberrier

It is the activesheet that I want.

Where would I add msgbox range("Q55").text?
 
D

Dave Peterson

right before the if statement.

You'd be using it just to help debug the problem.

msgbox range("q55").text
if range("q55").value = True then
.....
 
M

michaelberrier

Neat trick I didn't know. Somehow the value in Q55 got corrupted.
Thanks for the tip. Of course, now I've jumped a hurdle into a snake
pit.

I'm sure you'll see another post from me soon.
 
P

protonLeah

I have mod'ed your code as indicated (red). My small test worked:
_________________________________
Sub Look_Here1()
If Range("Q55") = True Then 'no quotes
MsgBox "Check Driver's License Expiration Date", 48
"ExpiredDriver's License"
Else
Dim FoundCell As Variant
Dim teststr As String 'for testing only
Dim WhatFor As Variant
WhatFor = ActiveSheet.Cells(7, 2).Value

With Worksheets(1).Range("B8:B990")
Set FoundCell = .Find(WhatFor, LookIn:=xlValues
MatchCase:=False)
End With

'note: with the word "testing" in B33, FoundCell held the valu
"testing" after the find operation, and not the address itself.
teststr = FoundCell.Address 'used to test only (teststr = $B$33, now)
If FoundCell Is Nothing Then
Range("A7").Select
ActiveCell.FormulaR1C1 = "X"
Range("D7").Select
Else
FoundCell.Offset(0, -1).Select
ActiveCell.FormulaR1C1 = "X"
Selection.Offset(0, 4).Select
End If
End If
End Su
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Top