当使用间接引用时,动态命名范围不起作用

时间:2012-05-08 04:11:54

标签: excel excel-vba vba

我的工作表中有一些动态命名范围。我使用以下公式使它们动态化:

= $ A $ 1:rowend($ A $ 1)

其中row end是一个自定义函数,它在行“A”中到达空单元格之前返回最后一个单元格

命名范围的命名如下:“iec_air” 还有另一个命名范围:“iec_ground”

现在的问题是,当我在单元格上应用数据验证并选择直接引用“iec_air”的列表时,它可以工作但是当尝试使用间接(“iec _”&“air”)来实现相同的事情时它不起作用

当我的命名范围是静态的时,它正在工作,而不是它。不知道如何解决它?

1 个答案:

答案 0 :(得分:1)

你知道如何使用VBA吗? 您可以做的一件事是在工作表模块中创建一个事件,并根据空白单元格动态调整命名范围的大小。

示例

Sub setRangeDynamically()

dim oRange     as range

'Set range from cell(1,1) until the first blank cell downwards
set oRange = thisworkbook.sheets("blabla").range(cells(1,1),cells(1,1).end(xldown))
thisworkbook.Names.Add Name:="MyRange", RefersTo:=oRange 
end sub

创建数据验证:

With thisworkbook.sheets("BlaBla").range("B2").Validation 
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
    xlBetween, Formula1:="=MyRange" 
End With