我有以下VBA功能。这是为了在给定的单元格中创建下拉列表
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)
问题是,对于每个细胞,我缺少一个值;在第一列缺少一个val,第二个单元格缺少2个val,第三个缺少3个值,...在某个地方之后我错过了所有值,空的下拉列表我得到了
中解决这个问题答案 0 :(得分:2)
尝试
"=PrjList!$A$2:$A$6"
如果没有$
,定义的范围地址是“相对的”,因此它将使用范围的单元格“向下滑动”。即第二行的验证将是A3:A7
,依此类推。
地址中的$
指示Excel 修复验证范围,因为它是绝对地址。