【问题标题】:Excel setting validation range for multiple rowsExcel设置多行的验证范围
【发布时间】:2021-10-04 11:02:20
【问题描述】:

我有一个 excel 表,其中列是食谱,而行是这些食谱的参数,例如:

是否有任何简单的解决方案可以根据 min & max 列表为每一行添加验证(第一个单元格是参数名称,因此必须跳过),并且这些参数在另一张表中?列数将来可能会有所不同。

我想出了类似的东西:

 With Selection.validation
    .Delete
    .Add Type:=xlValidateDecimal, AlertStyle:=xlValidAlertStop, Operator _
    :=xlBetween, Formula1:="=param_limits!B5", Formula2:="=param_limits!C5"
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = "zakres"
    .ErrorTitle = ""
    .InputMessage = "0  do 9999999"
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = True
End With

Formula1 和 Formula2 是具有此参数最大值和最小值的单元格。

但我不知道如何更改 Selection.validation 对象以获得确切的行以及如何遍历工作表直到最后一个参数。有人可以展示如何做到这一点吗?

谢谢

【问题讨论】:

  • 要进行迭代,您可以使用For...next 进行循环。要更改 Selection.validation,请将 Selection 替换为目标范围。类似Range("B2").Validation

标签: excel vba


【解决方案1】:

我想出了类似的东西,它工作正常:

For Each cell In Sheets("B").Range(Cells(4, 2), Cells(LastRow, 2))
        minLimRange = "=param_limits!B" & cell.Row
        maxLimRange = "=param_limits!C" & cell.Row
        InputMsg = "Od " & Range(minLimRange).Text & " Do " & Range(maxLimRange).Text
         With Range(Cells(cell.Row, 2), Cells(cell.Row, LastColumn)).validation
            .Delete
            .Add Type:=xlValidateWholeNumber, AlertStyle:=xlValidAlertStop, Operator _
            :=xlBetween, Formula1:=minLimRange, Formula2:=maxLimRange
            .IgnoreBlank = False
            .InCellDropdown = True
            .InputTitle = "Zakres wartości"
            .ErrorTitle = "Wartosć poza zakresem"
            .InputMessage = InputMsg
            .ErrorMessage = "Wpisz wartośc zgodnie z zakresem"
            .ShowInput = True
            .ShowError = True
End With
Next  cell

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多