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")