我正在编写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,我收到错误。我想知道是否有另一种方法来指定范围。请记住,范围经常变化。
其次,每当我在表中插入新行时,我都希望宏启动。我似乎无法弄清楚如何去做。
非常感谢您的回复,并提前感谢您的时间!
答案 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”)进行数据验证。