循环遍历列以自动分配验证

时间:2014-10-09 10:44:25

标签: excel vba excel-vba excel-2010

我正在制作一段代码,让我的工作更轻松。我有一个宏,它将使用列的第一个名称自动创建名称范围:

NameRange1
Value1
Value2
Value3
Value4
Value5

我已经拥有的代码将创建一个名为“NameRange1”的名称范围,其值为1到5.

接下来我需要做的是使用先前创建的名称范围自动设置数据验证列表。每列中的第一个单元格将匹配给定的名称范围(已存在)。

所以,我需要的是:

  • 首先,检查A列的行数。排除标题,这将是需要在每列中设置数据验证的单元格数。
  • 其次,对于每个有标题的列,我需要将数据验证列表设置为与A列一样多的行。每列使用的名称范围将与给定列的标题匹配。
  • 第三,如果任何列的标题没有名称范围匹配,则此特定列不应获得数据验证。

我已经拥有的代码负责第二个要求的第一部分(即它为整个列设置数据验证,忽略标题,使用其行的标题作为名称范围):

Sub SetDataValidation()
'
Dim rNo1 As Range

    With Selection.Validation
        Set rNo1 = ActiveSheet.Cells(1, ActiveCell.Column)
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=" & rNo1.Value
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
        Cells(1, 1).EntireRow.Validation.Delete
    End With
End Sub

0 个答案:

没有答案