如何循环访问具有特定单元格范围的列,并在VBA中设置数据validation?

我是VBA的新手,我试图创build一个程序来循环遍历具有特定单元格区域的列,并为这些单元格创build一个数据validation。 我select了“文本长度”选项 – 我希望最小值为1,最大值为单元格引用(但是,单元格引用也应该随各列一起更改)。 这是我迄今为止 – 从使用macroslogging和编辑代码一点。

我设置了一个范围variables(对于第一个循环,应该看起来像R16C2:R500C2),以便它在循环列中select给定的范围。 “公式2”应该随给定列而改变,但应保留在第14行。

任何帮助表示赞赏!

Sub Validation() ' ' Validation Macro For i = 2 To 84 Dim ranges As String ranges = "R16C" + Str(i) + ":R500C" + Str(i) With ThisWorkbook.Worksheets(1) Columns(i).Select Application.Goto Reference:=Range(ranges).Select With Selection.Validation .Delete .Add Type:=xlValidateTextLength, AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:="1", Formula2:="=$B$14" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With End With Next i End Sub 

只是使用

 Formula2:="=B$14" 

而且你也不需要任何循环:

 Sub Validation() With ThisWorkbook.Worksheets(1).Range("B16:CF500").Validation .Delete .Add Type:=xlValidateTextLength, AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:="1", Formula2:="=B$14" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With End Sub 

您需要更改下面的行

 Operator:=xlBetween, Formula1:="1", Formula2:="=$B$14" 

 Operator:=xlBetween, Formula1:="1", Formula2:="=$" & Chr(64+i) & "$14"