将VBA变量描述放在单元格中

时间:2015-10-30 14:10:49

标签: excel vba

大家。我在vba中有以下代码:

With tb.DataBodyRange
    MyRangeArray = Array(Worksheets(.Cells(1, 1).Value).Range(.Cells(1, 2).Value), _
                    Worksheets(.Cells(2, 1).Value).Range(.Cells(2, 2).Value), _
                    Worksheets(.Cells(3, 1).Value).Range(.Cells(3, 2).Value), _
                    Worksheets(.Cells(4, 1).Value).Range(.Cells(4, 2).Value), _
                    Worksheets(.Cells(5, 1).Value).Range(.Cells(5, 2).Value), _
                    Worksheets(.Cells(6, 1).Value).Range(.Cells(6, 2).Value))

End With

我正在尝试设置" MyRangeArray"一个单元格值,如:

Sheets("Home").Visible = True
MyRangeArray = Range("E1").Value

和我的范围" E1"在Excel中将与代码文本完全相同。

我尝试制作MyRangeArray = Range(" E1")。text(和.text2等等),但不能让它工作。有人可以帮忙吗? 谢谢!

1 个答案:

答案 0 :(得分:2)

不,你不能用这种方式从表单执行VBA代码(这是一件好事)。

如果您知道如何编写指向范围的公式,请使用Application.WorksheetFunction下的函数将其转换为等效的VBA语句。您会发现它在转换后看起来大致相同,并且您通常可以避免以这种方式复制代码,因为您可以将临时结果存储在变量中。

如果您无法转换公式,请使用Application.Evaluate。如,

Dim v As Variant
v = Application.Evaluate("INDEX(D8:F10, 2, 0)")

会在v中添加一个包含三个值的数组{。} 但请注意,公式将相对于活动工作表进行解析。您经常want to avoid that,这就是您希望将公式转换为VBA语句的原因。

如果您不想打字D9:F9,请使用方括号:

Application.Evaluate