使用“范围”公式时丢失的值将丢失

我有以下的VBAfunction。 这是在给定单元格中创build下拉菜单

Public Sub CORE_SetValidation(ByRef Rng As Range, ByVal Value As String) With Rng.Validation Call .Delete If Value <> "" Then Call .Add(Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:=Value) .ErrorMessage = "Please select a value from drop-down list" .ErrorTitle = "Value Error" .IgnoreBlank = True .InCellDropdown = True .InputMessage = "" .InputTitle = "" .ShowInput = True .ShowError = True End If End With End Sub 

当我通过逗号分隔的值传递给它,它的工作正常所有整个列

 dictkeystring = "1,2,3,4,5,6,7,8,9" CORE_SetValidation(Sourcews.Columns(AllocationSheet_Prj_COLUMN).EntireColumn, dictkeystring) 

但是当我使用Range公式传递值时,它不能正常工作。

 dictkeystring = "=PrjList!A2:A6" CORE_SetValidation(Sourcews.Columns(AllocationSheet_Prj_COLUMN).EntireColumn, dictkeystring) 

问题是,对于每个细胞我缺less一个值; 在第一列缺less一个val,第二个单元格缺less2 val,第三个缺less3个值,…在某个地方后,我缺less所有的值,空的下拉,我越来越

在这里输入图像描述
我不知道为什么这个错误发生,我可以在范围公式中解决这个问题

尝试

 "=PrjList!$A$2:$A$6" 

如果没有$ ,定义的范围地址是“相对的”,所以它会随着你的范围的单元格向下滑动。 即第二行的validation是A3:A7等等。

地址中的$指示Excel 修改validation范围,因为它是绝对地址。