Function procedure too long

B

bluewatermist

Hi

I'm having trouble making a function work. This function is too long, so I
have split it up. Below is an example. The below code call this function.
Unfortunately this function keeps looping and I can't get out of it. I'm at a
loss as to what to do. Hopefully you can help me.

Thank you.

test = Checkalllabels.check_labels and test = checkalllabels.check_labels1
If test = True Then
Exit Sub
End If


Function check_labels()

If CWC_Note.typeofcontact.Value = Clear Then
MsgBox "Type of call not selected", vbExclamation, ""
check_labels = True
CWC_Note.typeofcontact.SetFocus

ElseIf CWC_Note.nameofcontact.Value = Clear Then
MsgBox "Callers name required", vbExclamation, ""
check_labels = True
CWC_Note.nameofcontact.SetFocus
end if

call Check_labels1

end function
Function Check_labels1 ()

If CWC_Note.taxagentfirmname.Value = Clear And
CWC_Note.contactlistedon.Value = "CAC tax agent" Then
MsgBox "Tax agent firm name required", vbExclamation, ""
check_labels = True
CWC_Note.taxagentfirmname.SetFocus

ElseIf CWC_Note.taxagentfirmname.Value = Clear And
CWC_Note.contactlistedon.Value = "FBT tax agent" Then
MsgBox "Tax agent firm name required", vbExclamation, ""
check_labels = True
CWC_Note.taxagentfirmname.SetFocus
endif

end function
 
B

Bob Phillips

Guessing somewhat, but perhaps

test = checkalllabels.check_labels And _
checkalllabels.Check_labels1
If test = True Then
Exit Sub
End If


Function check_labels()

If CWC_Note.typeofcontact.Value = Clear Then
MsgBox "Type of call not selected", vbExclamation, ""
check_labels = True
CWC_Note.typeofcontact.SetFocus

ElseIf CWC_Note.nameofcontact.Value = Clear Then
MsgBox "Callers name required", vbExclamation, ""
check_labels = True
CWC_Note.nameofcontact.SetFocus
End If

End Function

Function Check_labels1()

If CWC_Note.taxagentfirmname.Value = Clear And _
CWC_Note.contactlistedon.Value = "CAC tax agent" Then
MsgBox "Tax agent firm name required", vbExclamation, ""
check_labels = True
CWC_Note.taxagentfirmname.SetFocus

ElseIf CWC_Note.taxagentfirmname.Value = Clear And _
CWC_Note.contactlistedon.Value = "FBT tax agent" Then
MsgBox "Tax agent firm name required", vbExclamation, ""
check_labels = True
CWC_Note.taxagentfirmname.SetFocus
End If

End Function
 
B

bluewatermist

Hi Bob

Removing the call check_labels1 doesn't work properly either. Any other
suggestion?
 
B

bluewatermist

No this still doesn't work. It doesn't recognize check_labels = true under
the second function (checkalllabels.Check_labels1)
 
B

Bob Phillips

I didn't notice that bit, does this clear it



Function Check_labels1()

If CWC_Note.taxagentfirmname.Value = Clear And _
CWC_Note.contactlistedon.Value = "CAC tax agent" Then
MsgBox "Tax agent firm name required", vbExclamation, ""
check_labels1 = True
CWC_Note.taxagentfirmname.SetFocus

ElseIf CWC_Note.taxagentfirmname.Value = Clear And _
CWC_Note.contactlistedon.Value = "FBT tax agent" Then
MsgBox "Tax agent firm name required", vbExclamation, ""
check_labels1 = True
CWC_Note.taxagentfirmname.SetFocus
End If

End Function
 
B

Bernie Deitrick

In addition, you should specify both the return type and default value:

Function Check_labels1() As Boolean 'Returns True or False
Check_labels1 = False 'Set default return value to False
'Rest of code

End Function


HTH,
Bernie
MS Excel MVP
 
B

bluewatermist

I've changed the second procedure with check_labels1 = true and the below
addition but it still doesn't stop. For example a message box will appear
stating the type of call wasn't selected (this was in the first procedure)
but will not stop and then it will bring another message stating tax agent
firm name required (from the second procedure). Any other suggestions?
 
B

bluewatermist

I could either email the worksheet to you or can post it if you advise me
where.
 
B

Bob Phillips

There are a number of free temporary storage sites out there, cjoint.com is
the one that I use.
 

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

Top