-1

Simple Hide Row not functioning when given multiple options

I've tried setting a Variable for the range and got same mismatch

If Range("J178") = "Credit" Or "Debit" Or "Both" Then
    Rows("180").Hidden = False
Else
    Rows("180").Hidden = True
End If

I expected the code to run or not; not the Run time 13 type mismatch I'm receiving.

Pᴇʜ
  • 56,719
  • 10
  • 49
  • 73
MATT
  • 3
  • 2
  • 1
    You can't write `Range("J178") = "Credit" Or "Debit"`. You need to re-write `Range("J178") = "Credit" Or Range("J178") = "Debit"`. – Matteo NNZ Jan 26 '19 at 22:21

3 Answers3

5

Option 1 - Write out each condition longhand (case sensitive)

If Range("J178") = "Credit" Or Range("J178") = "Debit" Or Range("J178") = "Both" Then
    Rows("180").Hidden = False
Else
    Rows("180").Hidden = True
End If

Option 2 - Check an array with the worksheet's Match (not case sensitive)

If IsNumeric(application.Match(Range("J178"), Array("Credit","Debit", "Both"), 0)) Then
    Rows("180").Hidden = False
Else
    Rows("180").Hidden = True
End If

Option 3 - Use a Select Case method (case sensitive)

Select Case Range("J178"),Value
    Case "Credit", "Debit", "Both"
        Rows("180").Hidden = False
    Case Else
        Rows("180").Hidden = True
End Select

Option 4 - Use a modified Select Case method (not case sensitive)

Select Case lcase(Range("J178"),Value)
    Case "credit", "debit", "both"
        Rows("180").Hidden = False
    Case Else
        Rows("180").Hidden = True
End Select
0

... Option 5 (following from @user10970498)

Dispense with the If-Then-Else-EndIf construct:

Rows("180").Hidden = (Range("J178") = "Credit" Or Range("J178") = "Debit" Or Range("J178") = "Both")

or

Rows("180").Hidden = IsNumeric(application.Match(Range("J178"), Array("Credit","Debit", "Both"), 0))

This works because the Hidden property is a Boolean.

AJD
  • 2,400
  • 2
  • 12
  • 22
0

A bit shorter alternative using Evaluate :

Rows("180").Hidden = Not [or(J178 = "Credit", J178 = "Debit", J178 = "Both")]
Slai
  • 22,144
  • 5
  • 45
  • 53