有一个工作表,其中包含两列的单元格引用列表。
尝试创建一个宏,将它们拉入一个范围,并使用 A 列中的第一个单元格作为自动形状线的起点,使用 B 列中的第二个单元格作为自动形状线的终点。
脚本正在工作并执行我想要的操作,但是在执行结束时我收到“下标超出范围错误”
我做错了什么?
rng = Range("A1:B100")
Worksheets("Map").Activate
For Each row In rng
i = i + 1
ActiveSheet.Shapes.AddConnector(msoConnectorStraight, Range(rng(i, 1)).Left, Range(rng(i, 1)).Top, Range(rng(i, 2)).Left, Range(rng(i, 2)).Top).Select
Next row
最佳答案
避免选择和激活,声明所有变量并仅从范围内的行循环:
Sub TestMe()
Dim rng As Range
Set rng = Worksheets("Map").Range("A1:B100")
Dim row As Range
Dim i As Long
For Each row In rng.Rows
i = i + 1
Worksheets("Map").Shapes.AddConnector msoConnectorStraight, _
row.Cells(i, 1).Left, _
row.Cells(i, 1).Top, _
row.Cells(i, 2).Left, _
row.Cells(i, 2).Top
Next row
End Sub
关于vba - 使用单元格引用作为自动形状线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52420102/