如何在Excel VBA的For循环中调用数组内的命名区域?
修正你的VBA代码以调用命名区域
首先,你的代码里有几个需要调整的地方,我来一步步帮你修正:
问题分析
- VBA中没有
Length()函数,要获取数组的元素数量,我们需要用UBound()和LBound()函数来计算 - 你定义的
fruits是字符串数组,存储的是命名区域的名称,不能直接用fruits.Cells(i)来引用,应该用Range(fruits(i))来指向对应的命名区域 - 数组在VBA中默认是从索引0开始的,你的循环从i=1开始会跳过第一个元素
- 尽量避免使用
Select和ActiveCell,直接对单元格赋值会更高效且更稳定
修正后的代码
Sub Macro() Dim fruits As Variant Dim i As Integer ' 存储命名区域的名称数组 fruits = Array("Apple", "Banana", "Coconut") ' 遍历数组,覆盖所有元素 For i = LBound(fruits) To UBound(fruits) ' 将对应命名区域的值写入第5行,列号对应i+1(适配数组0起始、Excel列1起始的差异) Cells(5, i + 1).Value = Range(fruits(i)).Value Next i End Sub
额外说明
如果你的命名区域是多单元格范围,想要明确获取区域内第一个单元格的值,可以把赋值语句改成:
Cells(5, i + 1).Value = Range(fruits(i)).Cells(1).Value
内容的提问来源于stack exchange,提问作者Übel Yildmar
相关产品推荐
相关产品推荐

