VBA单元格格式错误

我正在尝试使用for循环格式化一组单元格(稍后是条件while循环)

我收到错误“1004”

对象“全局”的方法“范围”失败

我不知道如何将单元格值转换为不会引发此错误的范围值。 Cells(x,y)本身也会抛出一个错误

提前致谢

For row = 2 To 5 With Range(Cells(row, 5)).Interior .Pattern = xlPatternRectangularGradient .Gradient.RectangleLeft = 0.5 .Gradient.RectangleRight = 0.5 .Gradient.RectangleTop = 0.5 .Gradient.RectangleBottom = 0.5 .Gradient.ColorStops.Clear End With With Range(Cells(row, 5)).Interior.Gradient.ColorStops.Add(0) .ThemeColor = xlThemeColorDark1 .TintAndShade = 0 End With With Range(Cells(row, 5)).Interior.Gradient.ColorStops.Add(1) .ThemeColor = xlThemeColorAccent6 .TintAndShade = -0.250984221930601 End With Next row 

不需要Range()

只要做Cells(row, 5).Interior

  For row = 2 To 5 With Cells(row, 5).Interior .Pattern = xlPatternRectangularGradient .Gradient.RectangleLeft = 0.5 .Gradient.RectangleRight = 0.5 .Gradient.RectangleTop = 0.5 .Gradient.RectangleBottom = 0.5 .Gradient.ColorStops.Clear End With With Cells(row, 5).Interior.Gradient.ColorStops.Add(0) .ThemeColor = xlThemeColorDark1 .TintAndShade = 0 End With With Cells(row, 5).Interior.Gradient.ColorStops.Add(1) .ThemeColor = xlThemeColorAccent6 .TintAndShade = -0.250984221930601 End With Next row 

为什么你甚至循环?

 Sub SO() With Range(Cells(2, 5), Cells(5, 5)).Interior .Pattern = xlPatternRectangularGradient .Gradient.RectangleLeft = 0.5 .Gradient.RectangleRight = 0.5 .Gradient.RectangleTop = 0.5 .Gradient.RectangleBottom = 0.5 .Gradient.ColorStops.Clear With .Gradient.ColorStops.Add(0) .ThemeColor = xlThemeColorDark1 .TintAndShade = 0 End With With .Gradient.ColorStops.Add(1) .ThemeColor = xlThemeColorAccent6 .TintAndShade = -0.250984221930601 End With End With End Sub 

摆脱Range()

 With Cells(row, 5).Interior 

你要么使用

 Cells(row, col) Cells(2, 5) 

要么

 Range(addressString) Range("E2") 

如果你没有在他们之前放置一个工作表对象,那么如果你在一个工作表模块中工作的话,他们会引用Activesheet或“我”。

供参考的东西如:

 Dim ws as worksheet set ws = Thisworkbook.sheets("Sheet1") ws.cells(2, 5) ws.Range("E2")