为.validation指定单元格的范围

我想插入一个数据validation列表,从另一个工作表获取数据。 列表将从其中生成的列存储在另一个dynamicvariables中。 我的代码到目前为止是:

pRange = Sheets("Payer Output").Cells(24, 3).Value With Sheets("Payer Output").Range("C23").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:=Sheets("Payers in Top 4").Cells(3, pRange) .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With 

此公式会生成一个列表,然后查找正确的列,但是当前代码仅指定列表应该在单个单元格中查看,因此生成列表时只有一个值。 如何为'formula1:='行指定一系列单元格? 我试过了:

 Formula1:=Sheets("Payers in Top 4").Range(Cells(3, pRange), Cells(10,pRange)) 

但是这不起作用。 感谢您的帮助!

有时候,我只会命名范围,并将命名的范围放在列表中。

 Sub AddDtaVal() pRange = Sheets("Payer Output").Range("C24").Value Sheets("Payers in Top 4").Range(Sheets("Payers in Top 4").Cells(3, pRange), Sheets("Payers in Top 4").Cells(10, pRange)).Name = "List" With Sheets("Payer Output").Range("C23").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=List" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With End Sub 

您需要在string中构build地址公式,即Excel样式: 'Sheet Name'!A1:A10

 Dim StrFormula As String Dim pRange As Long pRange = Sheets("Payer Output").Cells(24, 3).Value With Sheets("Payers in Top 4") StrFormula = "'" & .Name & "'!" & .Range(.Cells(3, pRange), .Cells(10, pRange)).Address End With With Sheets("Payer Output").Range("C23").Validation .Delete .Add Type:=xlValidateList, _ AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, _ Formula1:=StrFormula .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With 

尝试这个

 .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:="='Payers in Top 4'!" & Worksheets("Payers in Top 4").Cells(3, pRange).Resize(8).Address