List 更新数据验证列表范围
我正在尝试创建一个vba代码,该代码将我的数据验证列表范围更新到另一个工作表的最后一行。 我的下拉列表位于我的“主页”选项卡上,它的列表范围从“映射选项卡”的P列开始。列表将每天更改,因此希望添加到Formula中以查找finalrow,而不是输入单元格行值。这是我写的代码,但是公式出现了错误List 更新数据验证列表范围,list,excel,validation,range,vba,List,Excel,Validation,Range,Vba,我正在尝试创建一个vba代码,该代码将我的数据验证列表范围更新到另一个工作表的最后一行。 我的下拉列表位于我的“主页”选项卡上,它的列表范围从“映射选项卡”的P列开始。列表将每天更改,因此希望添加到Formula中以查找finalrow,而不是输入单元格行值。这是我写的代码,但是公式出现了错误 Sub getDropdownList() Dim finalrow1 As Integer 'finds last row in Column P on Mapping tab
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
我不知道这是否有效,但尝试将公式更改为
Formula1:="=Mapping!$P$1:$P" & finalrow1
excel可能将您的整数视为一个字符串而感到困惑。无需使用VBA来更新公式-改用动态公式(作为命名范围)。
作为命名范围,这将引用从$P$1到包含数据的最后一个单元格,前提是P列列表中没有空白单元格。
=映射$P$1:INDEX(映射!$P:$P,COUNTA(映射!$P:$P))
这需要作为命名范围输入,因为数据验证将不接受它
我有没有提到它必须是一个命名范围,而不是直接输入到源框中?:) 这非常有效。感谢您解释有关excel混淆的问题。