Excel - 遍历 table 越界错误
Excel - Loop through table out of bounds error
我的代码是通过 table 运行 并存储 D 列的单元格颜色,同时还将 C 列中的值存储为另一个变量。这些变量用于在另一个“主”选项卡上查找形状,并将该颜色更新为存储在 CellColor 中的颜色。当我添加代码的循环部分时,出现越界错误 (-2147024809 (80070057))。
Sub Update()
Dim CellColor As Long
Dim ShapeColor As Variant
Dim rng As Range, Cell As Range
Dim i As Integer
Worksheets("Sheet1").Select
Set rng = Range("C2:C100")
For i = 2 To rng.Rows.Count
CellColor = rng.Cells(RowIndex:=i, ColumnIndex:="D").DisplayFormat.Interior.Color
ShapeColor = rng.Cells(RowIndex:=i, ColumnIndex:="C").Value
Worksheets("main").Shapes(ShapeColor).Fill.ForeColor.RGB = CellColor
i = i + 1
Next
Worksheets("main").Select
End Sub
也许在这里使用 For Each
循环和 Offset
:
Set rng = Worksheets("Sheet1").Range("C2:C100")
Dim cell As Range
For Each cell In rng
ShapeColor = cell.Value
CellColor = cell.Offset(,1).DisplayFormat.Interior.Color
Worksheets("main").Shapes(ShapeColor).Fill.ForeColor.RGB = CellColor
Next
对您的问题的简要说明:
rng.Cells(RowIndex:=i, ColumnIndex:="C")
rng.Cells(RowIndex:=i, ColumnIndex:="D")
不是您认为的单元格,因为它们是偏移的,但是 从 C 列开始。他们实际上指的是 E 和 F.
列
举个例子:? Range("C2").Cells(1, "C").Address
returns $E
,不是$C
.
其他要点:
- 删除
i = i + 1
。 Next
是 i
. 的增量
- 避免使用
Select
:Set rng = Worksheets("Sheet1").Range("C2:C100")
.
我的代码是通过 table 运行 并存储 D 列的单元格颜色,同时还将 C 列中的值存储为另一个变量。这些变量用于在另一个“主”选项卡上查找形状,并将该颜色更新为存储在 CellColor 中的颜色。当我添加代码的循环部分时,出现越界错误 (-2147024809 (80070057))。
Sub Update()
Dim CellColor As Long
Dim ShapeColor As Variant
Dim rng As Range, Cell As Range
Dim i As Integer
Worksheets("Sheet1").Select
Set rng = Range("C2:C100")
For i = 2 To rng.Rows.Count
CellColor = rng.Cells(RowIndex:=i, ColumnIndex:="D").DisplayFormat.Interior.Color
ShapeColor = rng.Cells(RowIndex:=i, ColumnIndex:="C").Value
Worksheets("main").Shapes(ShapeColor).Fill.ForeColor.RGB = CellColor
i = i + 1
Next
Worksheets("main").Select
End Sub
也许在这里使用 For Each
循环和 Offset
:
Set rng = Worksheets("Sheet1").Range("C2:C100")
Dim cell As Range
For Each cell In rng
ShapeColor = cell.Value
CellColor = cell.Offset(,1).DisplayFormat.Interior.Color
Worksheets("main").Shapes(ShapeColor).Fill.ForeColor.RGB = CellColor
Next
对您的问题的简要说明:
rng.Cells(RowIndex:=i, ColumnIndex:="C")
rng.Cells(RowIndex:=i, ColumnIndex:="D")
不是您认为的单元格,因为它们是偏移的,但是 从 C 列开始。他们实际上指的是 E 和 F.
列举个例子:? Range("C2").Cells(1, "C").Address
returns $E
,不是$C
.
其他要点:
- 删除
i = i + 1
。Next
是i
. 的增量
- 避免使用
Select
:Set rng = Worksheets("Sheet1").Range("C2:C100")
.