我有一个工作表更改事件宏,以便每当数据验证单元格的值为"" (删除键击等),它粘贴在字符串"点击输入值"。下面的代码,它工作正常。
在另一张纸上,我需要相同的功能,但应用于多个数据验证单元,所有这些都在一列中,尽管非常分散。因此,我的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
答案 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