我试图创建一个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
答案 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))
这需要作为命名范围输入,因为数据验证不接受它。
我是否提到它必须是命名范围而不是直接输入到源框? :)