VBA名称管理器阵列

时间:2018-12-02 17:37:21

标签: excel vba

我创建了一个代码,该代码获取用户输入并从单元格X33输出“ 2 x n”数组。 n有所不同。因此,我设置了VBA代码以选择它:

lastCol = Cells(34, Columns.Count).End(xlToLeft).Column
Range(Range("X33"), Cells(34, lastCol)).Select 

我正在尝试通过名称管理器将上述选定范围分配到现有Array2中。当我尝试通过名称管理器记录宏时,我被迫使用

With ActiveWorkbook.Names("Array2")
    .Name = "Array2"
    .RefersToR1C1 = "=Sheet1!R33C24:R34C100"
    .Comment = ""
End With

我试图通过将上面的C100更改为&lastCol,因为输出中的最后一列可以是任何数字,但是记录的代码是固定的,不会将数组分配给我想要的选定范围。有什么办法可以更改此代码,以便它直接采用在顶部代码中选择的范围,而不是固定值。

我仍在学习VBA基础知识,因为我主要尝试通过录制进行手动编辑。谢谢,非常感谢。

2 个答案:

答案 0 :(得分:0)

dim lastCol as long

lastCol = Cells(34, Columns.Count).End(xlToLeft).Column

With ActiveWorkbook.Names("Array2")
    .Name = "Array2"
    'written directly
    .RefersToR1C1 = "=Sheet1!R33C24:R34C" & lastCol
    'or from the selected cells
    .RefersToR1C1 = selection.address(1, 1, ReferenceStyle:=xlr1c1, external:=true)
    .Comment = ""
End With

答案 1 :(得分:0)

setState