【问题标题】:Update Data Validation List Range更新数据验证列表范围
【发布时间】:2021-09-09 10:43:54
【问题描述】:

我正在尝试创建一个 vba 代码,它将我的数据验证列表范围更新为另一张纸上的最后一行。 我的下拉列表在我的“主页”选项卡上,它的列表范围来自“映射选项卡”上的 P 列。该列表每天都会更改,因此希望在公式中添加以查找 finalrow 而不是输入单元格行值。这是我编写的代码,但公式出现错误。

Sub getDropdownList()

    Dim finalrow1 As Integer

    'finds last row in Column P on Mapping tab
    Sheets("Mapping").Select
    finalrow1 = ActiveSheet.Cells(Rows.Count, "P").End(xlUp).Row

    Sheets("Home").Select
        Range("E7").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=Mapping!$P$1:$P &finalrow1"

    End With

    End Sub

【问题讨论】:

    标签: list excel validation range vba


    【解决方案1】:

    无需使用 VBA 来更新公式 - 改为使用动态公式(作为命名范围)。
    作为命名范围,它将引用从 $P$1 到包含数据的最后一个单元格 - 前提是 P 列列表中没有空白单元格。
    =Mapping!$P$1:INDEX(Mapping!$P:$P,COUNTA(Mapping!$P:$P))

    这需要作为命名范围输入,因为数据验证不会接受它。

    我有没有提到它必须是一个命名范围,而不是直接输入到源框? :)

    【讨论】:

      【解决方案2】:

      我不知道这是否可行,但请尝试将公式更改为

      Formula1:="=Mapping!$P$1:$P" & finalrow1
      

      excel 可能将您的整数视为字符串并感到困惑。

      【讨论】:

      • 效果很好。感谢您也解释了有关 excel 变得困惑的问题。
      【解决方案3】:

      在 VBA 上你做错了这行:

      xlBetween, Formula1:="=Mapping!$P$1:$P &finalrow1"
      

      请参阅下面对代码中该行的更正:

      xlBetween, Formula1:="=Mapping!$P$1:$P" & finalrow1
      

      【讨论】:

        猜你喜欢
        • 2014-02-15
        • 1970-01-01
        • 1970-01-01
        • 2015-04-05
        • 2016-05-05
        • 2022-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多