将列中所有数据验证单元格的地址添加到数组

时间:2018-06-07 22:28:02

标签: arrays excel vba

我有一个工作表更改事件宏,以便每当数据验证单元格的值为"" (删除键击等),它粘贴在字符串"点击输入值"。下面的代码,它工作正常。

在另一张纸上,我需要相同的功能,但应用于多个数据验证单元,所有这些都在一列中,尽管非常分散。因此,我的VBA需要改变Change Event宏,现在只在这些验证单元中查找更改。

最初的想法是将所有数据验证单元格地址放入一个数组中,以便宏在每次更改时循环,检查空白值。这是最有效的方式吗?如果是这样,我需要语法方面的帮助。假设单元格都在C列中......

这是第一张表中的单格宏。感谢您的任何指导。:

Private Sub Worksheet_Change(ByVal Target As Range)
  If Range("B2").Value = "" Then
     Range("B2").Value = "Click to Enter"
  End If
End Sub

1 个答案:

答案 0 :(得分:0)

SpecialCells方法有xlCellTypeAllValidation。

Private Sub Worksheet_Change(ByVal Target As Range)
  on error goto safe_exit
  If not intersect(target, target.parent.Cells.specialcells(xlCellTypeAllValidation)) is nothing then
     application.enableevents = false
     dim t as range
     for each t in intersect(target, target.parent.Cells.specialcells(xlCellTypeAllValidation))
         if not cbool(len(t.value)) then _
             t.Value = "Click to Enter"
     next t
  End If
safe_exit:
    application.enableevents = true
End Sub