设置具有变量名称VBA的Array

时间:2016-09-21 13:35:28

标签: vba excel-vba excel

我正在尝试使用VBA根据工作簿中的单元格值设置数组。我的数据上有一个名为THREEMO的数组。这个月的值是8月。我想添加一个名为Aug的Sheet,然后为Columns B:C设置一个数组,并将它们命名为Aug。我能够添加工作表并命名它,但数组不允许我使用变量来命名数组。以下是我到目前为止的情况:

Dim WS As Worksheet
Set WS = Sheets.Add(After:=Sheets(Worksheets.Count))
WS.Name = Range("THREEMO")

Dim stNewTab As String
stNewTab = Range("THREEMO")

'Set Arrays
Columns("B:C").Select
ActiveWorkbook.Names.Add Name:=Range("THREEMO"), RefersToR1C1:="=Range("THREEMO")!C2:C3"

我在“'Set Arrays”部分收到错误。这就是我录制宏时的样子,所以我只是在设置RefersToR1C1和月份变量时遇到了麻烦:

ActiveWorkbook.Names.Add Name:="AUG", RefersToR1C1:="=Aug!C5:C6"

2 个答案:

答案 0 :(得分:1)

更改

ActiveWorkbook.Names.Add Name:=Range("THREEMO"), RefersToR1C1:="=Range("THREEMO")!C2:C3"

ActiveWorkbook.Names.Add Name:=stNewTab, _
                         RefersToR1C1:="=" & stNewTab & "!C2:C3"

注释/解释

引号内的

Range("THREEMO")被视为字符串。保持在引号之外。最好还是使用变量stNewTab

该行

ActiveWorkbook.Names.Add Name:="AUG", RefersToR1C1:="=Aug!C5:C6"

也可以写成

ActiveWorkbook.Names.Add Name:="AUG", RefersToR1C1:="=" & "Aug" & "!C5:C6"

现在你所要做的就是用变量替换“Aug”。

答案 1 :(得分:1)

另一种选择,您可以像这样设置范围:

Dim Rng As range
Set Rng = WS.Range("C5:C6")

然后,您可以使用Names.Add命令稍微不同

ActiveWorkbook.Names.Add Name:=stNewTab, RefersTo:=Rng