Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 355
Default Help with messed-up code!!!

Hello -

I hope someone can help me on this one -- this project was due yesterday!
Scenario: If a cell in G contains "No" or "N/A" then check Column I to make
sure there's text in there. If Cell G contains a "Yes," then Col. I can be
blank. Return msgboxes for different scenarios when a button is clicked.

There is a msgbox that works that is generic (I have marked it below), but
these people decided they need to have more detail.

On testing, MsgBox #1 and #2 work. When I get to #3, it gives me the error
"object variable or with block not set." It points to the line in code which
is the condition for MsgBox #1 which is:
If numBlanks 0 And sStr < "" And blank_cells.Count 0 And sStrI <
"" Then

Also, if I fill the entire worksheet in correctly, I get the same error (in
other words, I should have gotten the "Congratulations" message. Conversely,
if the columns are completely blank and I click on the button, I should get a
list of each blank item, but I get an error. What am I messing up here
(other than the entire piece of code)? This is driving me crazy!!!! Any
help will be EXTREMELY appreciated!

Dim cell As Range
Dim Grng As Range
Dim ICell As Range
Dim blank_cells As Range
Dim sStrI As String
Dim rngA As Range
Dim rngB As Range
Dim j As Long, i As Long
j = 0
sStrI = ""

With ActiveSheet

Set rngA = .Range("G9, G13:G19, G22, G25:G26, G30, G35, G39, G43," & _
"G50, G51, G54:G58, G65, G68, G71, G74, G82, G83, G87," & _
"G88, G98, G99, G104, G110, G114, G118:G120, G122")
Set rngB = .Range("G126:G128, G130, G131, G135, G139, G142, G145, G148,"
& _
"G149, G153, G155, G159, G163, G164, G167, G169, G171," & _
"G176:G179, G189, G191, G194, G195")
Set Grng = Union(rngA, rngB)

For Each cell In Grng

Set ICell = .Cells(cell.Row, "I")

If (cell.Value = "No" Or cell.Value = "N/A" Or cell.Value = "") And _
(ICell.Text = False Or IsEmpty(ICell) Or ICell.Value = "") Then
If blank_cells Is Nothing Then
Set blank_cells = ICell
Else
Set blank_cells = Union(blank_cells, ICell)
sStrI = blank_cells.Address(0, 0) & ","
End If
End If
Next cell
sStrI = Left(sStrI, Len(sStrI) - 1)
For i = 1 To Len(sStrI)
If Mid(sStrI, i, 1) = "," Then
j = j + 1
If j = 6 Then
Mid(sStrI, i, 1) = vbCrLf
j = 0
End If
End If
Next

For Each c In Grng.Cells
If c.Value = "" Or c.Value = "0" Then
numBlanks = numBlanks + 1
End If
Next c

End With
Dim sStr As String
Dim rRng As Range
Dim rCell As Range

sStr = ""
For Each rCell In Grng.Cells
If rCell.Value = "" Or rCell.Value = "0" Then
sStr = sStr & rCell.Address(0, 0) & ","
End If
Next rCell
sStr = Left(sStr, Len(sStr) - 1)

For i = 1 To Len(sStr)
If Mid(sStr, i, 1) = "," Then
j = j + 1
If j = 6 Then
Mid(sStr, i, 1) = vbCrLf
j = 0
End If
End If
Next
'***********
'MsgBox ("Number of blank cells: " & numBlanks _
& vbCrLf & vbCrLf & "Blank cell(s): " & vbCrLf & vbCrLf & sStr _
& vbCrLf & vbCrLf & "All blanks must be filled in before proceeding!"), _
[vbOKOnly], ["Blank Cells!"]
'***************
'THIS MSGBOX WORKS
'If numBlanks 0 Or sStr < "" Or blank_cells.Count 0 Or sStrI < "" Then
' MsgBox "Number of blanks in G: " & numBlanks & vbCrLf & vbCrLf & _
' "Blank cell(s) in G: " & vbCrLf & sStr & vbCrLf & vbCrLf & _
' "Number of blanks in I: " & blank_cells.Count & vbCrLf & vbCrLf & _
' "Blank cell(s) in I: " & vbCrLf & sStrI
'***************
'#1 If blanks in both G and I
If numBlanks 0 And sStr < "" And blank_cells.Count 0 And sStrI <
"" Then
MsgBox ("Warning 1 - " & numBlanks & " question(s) remain(s)
unanswered." & vbCrLf _
& "Return to AUDIT tab to identify blank cell(s). " _
& vbCrLf & vbCrLf _
& "Warning - " & blank_cells.Count & " cell(s) require(s) a reason for
an N/A or No Response. " _
& vbCrLf & "Cell(s): " & sStrI), [vbOKOnly], ["Blank Cells!"]
'#2If all of G answered, but I incomplete
ElseIf numBlanks = 0 And sStr = "" And blank_cells.Count 0 And sStrI
< "" Then
MsgBox ("Warning - 2 " & blank_cells.Count & " cell(s) require(s) a
reason for an N/A or No Response." _
& vbCrLf & "Cell(s): " & sStrI), [vbOKOnly], ["Blank Cells!"]

'#3 If blanks in G but none in I (numBlanks = X, They a sStr)
ElseIf numBlanks 0 And sStr < "" And blank_cells.Count = 0 And sStrI
< "" Then
MsgBox ("Warning - 3 " & numBlanks & " question(s) remain(s) unanswered.
" & vbCrLf _
& "Return to AUDIT tab " _
& " to identify blank cell(s). "), [vbOKOnly], ["Blank Cells!"]

ElseIf numBlanks = 0 And blank_cells.Count = 0 Then
MsgBox ("Congratulations! This file is ready to upload " & vbCrLf _
& "using the Web Tool."), [vbOKOnly], ["Congratulations!"]
Else MsgBox "There is an error in my code"
End If
--
Sandy
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,600
Default Help with messed-up code!!!

Hi Sandy,

I haven't tried your code but at a glance I expect the range var
"blank_cells" has not been set. It's probably better to figure out why not,
but in the mean time adapt with something like this

Dim lBlankCells as long

'code
If blank_cells is nothing then
lBlankCells = 0
else
lBlankCells = blank_cells.count
End if

Then in your Msgbox's substitute blank_cells.count with lBlankCells

In passing, this line cought my attention

sStrI = Left(sStrI, Len(sStrI) - 1)


At this point are you sure sStrI cannot be an empty string, if so the Left
function would fail. What occurs if all cells pass the test.

Regards,
Peter T

"Sandy" wrote in message
...
Hello -

I hope someone can help me on this one -- this project was due yesterday!
Scenario: If a cell in G contains "No" or "N/A" then check Column I to

make
sure there's text in there. If Cell G contains a "Yes," then Col. I can

be
blank. Return msgboxes for different scenarios when a button is clicked.

There is a msgbox that works that is generic (I have marked it below), but
these people decided they need to have more detail.

On testing, MsgBox #1 and #2 work. When I get to #3, it gives me the

error
"object variable or with block not set." It points to the line in code

which
is the condition for MsgBox #1 which is:
If numBlanks 0 And sStr < "" And blank_cells.Count 0 And sStrI <
"" Then

Also, if I fill the entire worksheet in correctly, I get the same error

(in
other words, I should have gotten the "Congratulations" message.

Conversely,
if the columns are completely blank and I click on the button, I should

get a
list of each blank item, but I get an error. What am I messing up here
(other than the entire piece of code)? This is driving me crazy!!!! Any
help will be EXTREMELY appreciated!

Dim cell As Range
Dim Grng As Range
Dim ICell As Range
Dim blank_cells As Range
Dim sStrI As String
Dim rngA As Range
Dim rngB As Range
Dim j As Long, i As Long
j = 0
sStrI = ""

With ActiveSheet

Set rngA = .Range("G9, G13:G19, G22, G25:G26, G30, G35, G39, G43," & _
"G50, G51, G54:G58, G65, G68, G71, G74, G82, G83, G87," &

_
"G88, G98, G99, G104, G110, G114, G118:G120, G122")
Set rngB = .Range("G126:G128, G130, G131, G135, G139, G142, G145,

G148,"
& _
"G149, G153, G155, G159, G163, G164, G167, G169, G171," &

_
"G176:G179, G189, G191, G194, G195")
Set Grng = Union(rngA, rngB)

For Each cell In Grng

Set ICell = .Cells(cell.Row, "I")

If (cell.Value = "No" Or cell.Value = "N/A" Or cell.Value = "")

And _
(ICell.Text = False Or IsEmpty(ICell) Or ICell.Value = "") Then
If blank_cells Is Nothing Then
Set blank_cells = ICell
Else
Set blank_cells = Union(blank_cells, ICell)
sStrI = blank_cells.Address(0, 0) & ","
End If
End If
Next cell
sStrI = Left(sStrI, Len(sStrI) - 1)
For i = 1 To Len(sStrI)
If Mid(sStrI, i, 1) = "," Then
j = j + 1
If j = 6 Then
Mid(sStrI, i, 1) = vbCrLf
j = 0
End If
End If
Next

For Each c In Grng.Cells
If c.Value = "" Or c.Value = "0" Then
numBlanks = numBlanks + 1
End If
Next c

End With
Dim sStr As String
Dim rRng As Range
Dim rCell As Range

sStr = ""
For Each rCell In Grng.Cells
If rCell.Value = "" Or rCell.Value = "0" Then
sStr = sStr & rCell.Address(0, 0) & ","
End If
Next rCell
sStr = Left(sStr, Len(sStr) - 1)

For i = 1 To Len(sStr)
If Mid(sStr, i, 1) = "," Then
j = j + 1
If j = 6 Then
Mid(sStr, i, 1) = vbCrLf
j = 0
End If
End If
Next
'***********
'MsgBox ("Number of blank cells: " & numBlanks _
& vbCrLf & vbCrLf & "Blank cell(s): " & vbCrLf & vbCrLf & sStr _
& vbCrLf & vbCrLf & "All blanks must be filled in before

proceeding!"), _
[vbOKOnly], ["Blank Cells!"]
'***************
'THIS MSGBOX WORKS
'If numBlanks 0 Or sStr < "" Or blank_cells.Count 0 Or sStrI < ""

Then
' MsgBox "Number of blanks in G: " & numBlanks & vbCrLf & vbCrLf & _
' "Blank cell(s) in G: " & vbCrLf & sStr & vbCrLf & vbCrLf & _
' "Number of blanks in I: " & blank_cells.Count & vbCrLf & vbCrLf & _
' "Blank cell(s) in I: " & vbCrLf & sStrI
'***************
'#1 If blanks in both G and I
If numBlanks 0 And sStr < "" And blank_cells.Count 0 And sStrI <
"" Then
MsgBox ("Warning 1 - " & numBlanks & " question(s) remain(s)
unanswered." & vbCrLf _
& "Return to AUDIT tab to identify blank cell(s). " _
& vbCrLf & vbCrLf _
& "Warning - " & blank_cells.Count & " cell(s) require(s) a reason for
an N/A or No Response. " _
& vbCrLf & "Cell(s): " & sStrI), [vbOKOnly], ["Blank Cells!"]
'#2If all of G answered, but I incomplete
ElseIf numBlanks = 0 And sStr = "" And blank_cells.Count 0 And sStrI
< "" Then
MsgBox ("Warning - 2 " & blank_cells.Count & " cell(s) require(s) a
reason for an N/A or No Response." _
& vbCrLf & "Cell(s): " & sStrI), [vbOKOnly], ["Blank Cells!"]

'#3 If blanks in G but none in I (numBlanks = X, They a sStr)
ElseIf numBlanks 0 And sStr < "" And blank_cells.Count = 0 And

sStrI
< "" Then
MsgBox ("Warning - 3 " & numBlanks & " question(s) remain(s)

unanswered.
" & vbCrLf _
& "Return to AUDIT tab " _
& " to identify blank cell(s). "), [vbOKOnly], ["Blank Cells!"]

ElseIf numBlanks = 0 And blank_cells.Count = 0 Then
MsgBox ("Congratulations! This file is ready to upload " & vbCrLf _
& "using the Web Tool."), [vbOKOnly], ["Congratulations!"]
Else MsgBox "There is an error in my code"
End If
--
Sandy



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 355
Default Help with messed-up code!!!

Hi Peter -

Thank you so much! You put me on the right track. The code is working now.
Whew!!

--
Sandy


"Peter T" wrote:

Hi Sandy,

I haven't tried your code but at a glance I expect the range var
"blank_cells" has not been set. It's probably better to figure out why not,
but in the mean time adapt with something like this

Dim lBlankCells as long

'code
If blank_cells is nothing then
lBlankCells = 0
else
lBlankCells = blank_cells.count
End if

Then in your Msgbox's substitute blank_cells.count with lBlankCells

In passing, this line cought my attention

sStrI = Left(sStrI, Len(sStrI) - 1)


At this point are you sure sStrI cannot be an empty string, if so the Left
function would fail. What occurs if all cells pass the test.

Regards,
Peter T

"Sandy" wrote in message
...
Hello -

I hope someone can help me on this one -- this project was due yesterday!
Scenario: If a cell in G contains "No" or "N/A" then check Column I to

make
sure there's text in there. If Cell G contains a "Yes," then Col. I can

be
blank. Return msgboxes for different scenarios when a button is clicked.

There is a msgbox that works that is generic (I have marked it below), but
these people decided they need to have more detail.

On testing, MsgBox #1 and #2 work. When I get to #3, it gives me the

error
"object variable or with block not set." It points to the line in code

which
is the condition for MsgBox #1 which is:
If numBlanks 0 And sStr < "" And blank_cells.Count 0 And sStrI <
"" Then

Also, if I fill the entire worksheet in correctly, I get the same error

(in
other words, I should have gotten the "Congratulations" message.

Conversely,
if the columns are completely blank and I click on the button, I should

get a
list of each blank item, but I get an error. What am I messing up here
(other than the entire piece of code)? This is driving me crazy!!!! Any
help will be EXTREMELY appreciated!

Dim cell As Range
Dim Grng As Range
Dim ICell As Range
Dim blank_cells As Range
Dim sStrI As String
Dim rngA As Range
Dim rngB As Range
Dim j As Long, i As Long
j = 0
sStrI = ""

With ActiveSheet

Set rngA = .Range("G9, G13:G19, G22, G25:G26, G30, G35, G39, G43," & _
"G50, G51, G54:G58, G65, G68, G71, G74, G82, G83, G87," &

_
"G88, G98, G99, G104, G110, G114, G118:G120, G122")
Set rngB = .Range("G126:G128, G130, G131, G135, G139, G142, G145,

G148,"
& _
"G149, G153, G155, G159, G163, G164, G167, G169, G171," &

_
"G176:G179, G189, G191, G194, G195")
Set Grng = Union(rngA, rngB)

For Each cell In Grng

Set ICell = .Cells(cell.Row, "I")

If (cell.Value = "No" Or cell.Value = "N/A" Or cell.Value = "")

And _
(ICell.Text = False Or IsEmpty(ICell) Or ICell.Value = "") Then
If blank_cells Is Nothing Then
Set blank_cells = ICell
Else
Set blank_cells = Union(blank_cells, ICell)
sStrI = blank_cells.Address(0, 0) & ","
End If
End If
Next cell
sStrI = Left(sStrI, Len(sStrI) - 1)
For i = 1 To Len(sStrI)
If Mid(sStrI, i, 1) = "," Then
j = j + 1
If j = 6 Then
Mid(sStrI, i, 1) = vbCrLf
j = 0
End If
End If
Next

For Each c In Grng.Cells
If c.Value = "" Or c.Value = "0" Then
numBlanks = numBlanks + 1
End If
Next c

End With
Dim sStr As String
Dim rRng As Range
Dim rCell As Range

sStr = ""
For Each rCell In Grng.Cells
If rCell.Value = "" Or rCell.Value = "0" Then
sStr = sStr & rCell.Address(0, 0) & ","
End If
Next rCell
sStr = Left(sStr, Len(sStr) - 1)

For i = 1 To Len(sStr)
If Mid(sStr, i, 1) = "," Then
j = j + 1
If j = 6 Then
Mid(sStr, i, 1) = vbCrLf
j = 0
End If
End If
Next
'***********
'MsgBox ("Number of blank cells: " & numBlanks _
& vbCrLf & vbCrLf & "Blank cell(s): " & vbCrLf & vbCrLf & sStr _
& vbCrLf & vbCrLf & "All blanks must be filled in before

proceeding!"), _
[vbOKOnly], ["Blank Cells!"]
'***************
'THIS MSGBOX WORKS
'If numBlanks 0 Or sStr < "" Or blank_cells.Count 0 Or sStrI < ""

Then
' MsgBox "Number of blanks in G: " & numBlanks & vbCrLf & vbCrLf & _
' "Blank cell(s) in G: " & vbCrLf & sStr & vbCrLf & vbCrLf & _
' "Number of blanks in I: " & blank_cells.Count & vbCrLf & vbCrLf & _
' "Blank cell(s) in I: " & vbCrLf & sStrI
'***************
'#1 If blanks in both G and I
If numBlanks 0 And sStr < "" And blank_cells.Count 0 And sStrI <
"" Then
MsgBox ("Warning 1 - " & numBlanks & " question(s) remain(s)
unanswered." & vbCrLf _
& "Return to AUDIT tab to identify blank cell(s). " _
& vbCrLf & vbCrLf _
& "Warning - " & blank_cells.Count & " cell(s) require(s) a reason for
an N/A or No Response. " _
& vbCrLf & "Cell(s): " & sStrI), [vbOKOnly], ["Blank Cells!"]
'#2If all of G answered, but I incomplete
ElseIf numBlanks = 0 And sStr = "" And blank_cells.Count 0 And sStrI
< "" Then
MsgBox ("Warning - 2 " & blank_cells.Count & " cell(s) require(s) a
reason for an N/A or No Response." _
& vbCrLf & "Cell(s): " & sStrI), [vbOKOnly], ["Blank Cells!"]

'#3 If blanks in G but none in I (numBlanks = X, They a sStr)
ElseIf numBlanks 0 And sStr < "" And blank_cells.Count = 0 And

sStrI
< "" Then
MsgBox ("Warning - 3 " & numBlanks & " question(s) remain(s)

unanswered.
" & vbCrLf _
& "Return to AUDIT tab " _
& " to identify blank cell(s). "), [vbOKOnly], ["Blank Cells!"]

ElseIf numBlanks = 0 And blank_cells.Count = 0 Then
MsgBox ("Congratulations! This file is ready to upload " & vbCrLf _
& "using the Web Tool."), [vbOKOnly], ["Congratulations!"]
Else MsgBox "There is an error in my code"
End If
--
Sandy




Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Messed up Zoom lightbulb Excel Discussion (Misc queries) 3 May 19th 09 07:31 PM
messed up tab key TRESSA WYKOFF Excel Discussion (Misc queries) 2 December 4th 07 03:36 PM
Lookup really messed up mattgoof2005 Excel Discussion (Misc queries) 2 June 14th 06 04:35 PM
I messed up and need help wwoody New Users to Excel 3 April 23rd 06 11:27 PM
One line of code messed up! scrabtree23[_2_] Excel Programming 4 January 16th 04 03:06 PM


All times are GMT +1. The time now is 04:42 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"