更新数据验证列表范围

时间:2016-04-01 13:13:56

标签: list excel-vba validation range vba

我试图创建一个vba代码,将我的数据验证列表范围更新到另一个工作表的最后一行。 我的下拉列表在我的" Home"选项卡,其列表范围从P列上的#P;映射选项卡"。该列表将每天更改,因此希望在formula中添加以查找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

2 个答案:

答案 0 :(得分:1)

我不知道这是否有效,但尝试将公式更改为

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

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

答案 1 :(得分:1)

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

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

我是否提到它必须是命名范围而不是直接输入到源框? :)