Determine if a cell has datavalidation

  • Thread starter Thread starter mohsinb
  • Start date Start date
M

mohsinb

Hi,

Is there anyway to determine if the cell has data validation defined ?.
Something similar to range.hasformula. I want to turn incelldropdown to
false if datavalidation is defined for the cell. I need this done to
prevent selection from the dropdown list of protected , locked cells
when the file has been opened in readonly.

Thank you.
 
Sub testit()
Dim blnHasValidation As Boolean

On Error GoTo e
blnHasValidation = False
With ActiveCell.Validation: blnHasValidation = CBool(.Type = 0 Or .Type
<> 0): End With
e: On Error GoTo 0

MsgBox blnHasValidation
End Sub
 
After putting brain in gear.. here's another solution:

Sub testit()
Dim blnHasValidation As Boolean

With ActiveSheet
blnHasValidation = Not
Intersect(.Cells.SpecialCells(xlCellTypeAllValidation), ActiveCell) Is
Nothing
End With

MsgBox blnHasValidation
End Sub


Rob van Gelder said:
Sub testit()
Dim blnHasValidation As Boolean

On Error GoTo e
blnHasValidation = False
With ActiveCell.Validation: blnHasValidation = CBool(.Type = 0 Or ..Type
<> 0): End With
e: On Error GoTo 0

MsgBox blnHasValidation
End Sub
 
Thanks Rob.

I settled for a variation of the ''On Error" method to determine i
there is data validation for a cell. Works good. All set
 
I think this might be another way:

Function HasValidation(rng As Range) As Boolean
On Error Resume Next
HasValidation = rng.Validation.AlertStyle
End Function

Debug.Print HasValidation(ActiveCell)
Debug.Print HasValidation(Range("B1"))
 
Back
Top