数据验证宏,自定义指定范围

时间:2015-02-17 09:55:21

标签: excel-vba validation vba excel

我正在编写excel(VBA)中的代码,该代码涉及从同一工作表中的一系列单元格创建数据验证列表。但是,此范围会根据大小和内容而变化。

我使用的部分代码与数据验证有关:

 With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:=RangeData
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With

其中RangeData是我之前定义的变量范围。

我遇到的第一个问题是RangeData,我收到错误。我想知道是否有另一种方法来指定范围。请记住,范围经常变化。

其次,每当我在表中插入新行时,我都希望宏启动。我似乎无法弄清楚如何去做。

非常感谢您的回复,并提前感谢您的时间!

1 个答案:

答案 0 :(得分:1)

右键单击工作表选项卡并选择视图代码,您可以在Worksheet_Change事件中键入代码,也可以只复制并粘贴它。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Rws As Long, Rng As Range
    Rws = Cells(Rows.Count, "A").End(xlUp).Row
    Set Rng = Range(Cells(1, 1), Cells(Rws, 1))
    Rng.Name = "RangeData"

    With Range("C1").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
             xlBetween, Formula1:="=RangeData"
    End With

End Sub

不知道所选单元格是什么,我使用范围(“C1”)进行数据验证。

enter code

data val