Struggling with Another If And Or Statement

reberryjr

Well-known Member
Joined
Mar 16, 2017
Messages
701
Office Version
  1. 365
Platform
  1. Windows
So, I'm struggling with yet another one of these statements. I've tried both sets of code below, and I keep getting the message box when each box is completed, except for the txt_Street2 box. The idea is that if any of the 5 are not null, but either Street1, City, ST or Zip are null, I should get the message box. How have I coded this incorrectly?

Code:
'If Not Len(Me.txt_Street1.Value) = 0 Or Not Len(Me.txt_Street2.Value) = 0 Or Not Len(Me.txt_City.Value) = 0 Or Not Len(Me.cobo_ST.Value) = 0 Or Not Val(Me.txt_Zip.Text) = 0 And _'(Len(Me.txt_Street1.Value) = 0 Or Len(Me.txt_City.Value) = 0 Or Len(Me.cobo_ST.Value) = 0 Or Val(Me.txt_Zip.Text) = 0) Then
'    Response = MsgBox("Please complete the partial address entered.")
'    If Response = vbOK Then Me.txt_Street1.SetFocus
'    Exit Sub
'End If


If Not Len(Me.txt_Street1.Value) = 0 Or Not Len(Me.txt_Street2.Value) = 0 Or Not Len(Me.txt_City.Value) = 0 Or Not Len(Me.cobo_ST.Value) = 0 Or Not Len(Me.txt_Zip.Value) = 0 And _
(Len(Me.txt_Street1.Value) = 0 Or Len(Me.txt_City.Value) = 0 Or Len(Me.cobo_ST.Value) = 0 Or Len(Me.txt_Zip.Value) = 0) Then
    Response = MsgBox("Please complete the partial address entered.")
    If Response = vbOK Then Me.txt_Street1.SetFocus
    Exit Sub
End If
 

Excel Facts

What is the fastest way to copy a formula?
If A2:A50000 contain data. Enter a formula in B2. Select B2. Double-click the Fill Handle and Excel will shoot the formula down to B50000.
So, I'm struggling with yet another one of these statements. I've tried both sets of code below, and I keep getting the message box when each box is completed, except for the txt_Street2 box. The idea is that if any of the 5 are not null, but either Street1, City, ST or Zip are null, I should get the message box. How have I coded this incorrectly?

Code:
'If Not Len(Me.txt_Street1.Value) = 0 Or Not Len(Me.txt_Street2.Value) = 0 Or Not Len(Me.txt_City.Value) = 0 Or Not Len(Me.cobo_ST.Value) = 0 Or Not Val(Me.txt_Zip.Text) = 0 And _'(Len(Me.txt_Street1.Value) = 0 Or Len(Me.txt_City.Value) = 0 Or Len(Me.cobo_ST.Value) = 0 Or Val(Me.txt_Zip.Text) = 0) Then
'    Response = MsgBox("Please complete the partial address entered.")
'    If Response = vbOK Then Me.txt_Street1.SetFocus
'    Exit Sub
'End If


If Not Len(Me.txt_Street1.Value) = 0 Or Not Len(Me.txt_Street2.Value) = 0 Or Not Len(Me.txt_City.Value) = 0 Or Not Len(Me.cobo_ST.Value) = 0 Or Not Len(Me.txt_Zip.Value) = 0 And _
(Len(Me.txt_Street1.Value) = 0 Or Len(Me.txt_City.Value) = 0 Or Len(Me.cobo_ST.Value) = 0 Or Len(Me.txt_Zip.Value) = 0) Then
    Response = MsgBox("Please complete the partial address entered.")
    If Response = vbOK Then Me.txt_Street1.SetFocus
    Exit Sub
End If

I like to error trap and append to string then display it once. Something like:
Code:
Dim errmsg as string
if trim(me.text1)="" then
errmsg = "Textbox1 data needed"
endif
if trim(me.textbox2)="" then
errmsg = errmsg & vbcr & "Textbox2 data needed"
endif
if trim(me.textbox3)="" then
errmsg = errmsg & vbcr & "Textbox3 data needed"
endif
if errmsg<>"" then
msgbox errmg, vbcritical,"FORM INCOMPLETE"
exit sub
endif
'if ok then continue with macro...

Obviously you can personalize your messages more.
 
Upvote 0
I was hoping to avoid having to call out each control.
 
Upvote 0
Finally realized that I hadn't enclosed the first part of the statement in parentheses.
 
Upvote 0

Forum statistics

Threads
1,216,099
Messages
6,128,820
Members
449,469
Latest member
Kingwi11y

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top