View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
PPL PPL is offline
external usenet poster
 
Posts: 18
Default Problem with the "Or" operand in Excel

Hi Per,
Thank you so much for this - it works, and sorry for the confusion in my
earlier post, I am actually trying to hide all rows apart from those that
contain Fred, or John or Mary

You have used the "<" plus the "And" operand and it works perfectly thank
you. Problem is I don't understand why. In my (obviously wrong) logic the Or
operand should have done the job - can you explain why it doesn't. Again in
my twisted logic I'd have said that inorder for the "If" statement to work
with the "And" operand then the cell being tested would have to contain ALL
three names!

Thank you again for your help. Much appreciated!

Phil



"Per Jessen" wrote in message
...
Hi

This will hide all rows which do not contain one of the names.

Sub MyHideRows()
Dim StartRow As Integer
StartRow = 1
Do Until StartRow Cells(Cells.Rows.Count, "C").End(xlUp).Row
If Cells(StartRow, 3).Value < "Fred" _
And Cells(StartRow, 3).Value < "John" _
And Cells(StartRow, 3).Value < "Mary" Then

Rows(StartRow).Hidden = True
End If

StartRow = StartRow + 1
Loop
End Sub

And this will hide rows which contain one of the selected names:

Sub MyHideRows()
Dim StartRow As Integer
StartRow = 1
Do Until StartRow Cells(Cells.Rows.Count, "C").End(xlUp).Row
If Cells(StartRow, 3).Value = "Fred" _
Or Cells(StartRow, 3).Value = "John" _
Or Cells(StartRow, 3).Value = "Mary" Then

Rows(StartRow).Hidden = True
End If

StartRow = StartRow + 1
Loop
End Sub

Regards,
Per

"PPL" skrev i meddelelsen
...
Excel 2002/3
I am trying to write a short script that looks at all cells in column C
and if the cell contains a selected name (i.e., Fred or John or Mary)
then the entire row is hidden
I would have thought that the following would have doen it?

Sub MyHideRows()
Dim startrow As Integer
startrow = 1
Do Until startrow Cells(Cells.Rows.Count, "C").End(xlUp).Row
If Cells(startrow, 3).Value < "Fred" _
Or Cells(startrow, 3).Value < "John" _
Or Cells(startrow, 3).Value < "Mary" Then

Cells(startrow, 3).Select
Selection.EntireRow.Hidden = True
End If

startrow = startrow + 1
Loop
End Sub

The result is that regardless of content the script hides all rows

Interstingly if I strip out the "Or" operands and leave the basic "If"
statement it works fine.
So this works:

If Cells(startrow, 3).Value < "Fred" Then
Cells(startrow, 3).Select
Selection.EntireRow.Hidden = True
End If

Can somebody please please help me with the logic here (or my lack of
same!)

TIA

Phil