我正在尝试使用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"
答案 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