问题描述
我的代码是将颜色填充到填充行上方的行中。 文本上方有 2 行,它的底行 2 需要填充颜色? 它们应该链接到函数上方的 Sub 中显示的范围 我真的无法理解它前几天似乎可以工作,但现在它停止工作了? 我认为 sub 是对的,只是功能似乎失败了?? 不确定如何将两者联系在一起?
Private Sub Fill_Color_Click()
Dim Com As ComboBox
Dim ws As Worksheet
Set Com = Me.Fill_Color
With ws
Select Case Com.Value
Case ("Fill Color 1 Page Job Card")
Color .Range("A13:Q61")
Case ("Fill Color 2 Page Job Card")
Color .Range("A13:Q61")
Color .Range("A66:Q120")
Case ("Fill Color 3 Page Job Card")
Color .Range("A13:Q61")
Color .Range("A66:Q122")
Color .Range("A127:Q178")
Case ("Fill Color 4 Page Job Card")
Color .Range("A13:Q61")
Color .Range("A66:Q122")
Color .Range("A127:Q183")
Color .Range("A188:Q244")
Case ("Fill Color 5 Page Job Card")
Color .Range("A13:Q61")
Color .Range("A66:Q122")
Color .Range("A127:Q183")
Color .Range("A188:Q244")
Color .Range("A249:Q299")
End Select
End With
End Sub
Function Color(rng As Range)
Dim row As Range
Dim sheet As Worksheet
Set ws = ThisWorkbook.Sheets("Job Card Master")
Dim EmptyRowNum As Integer
For i = 1 To rng.Rows.Count
Set row = rng.Rows(i)
If WorksheetFunction.CountA(row) = 0 Then
EmptyRowNum = EmptyRowNum + 1
End If
If EmptyRowNum = 2 Then
EmptyRowNum = 0
row.Interior.ColorIndex = 4
End If
Next i
End Function
解决方法
您有命名错误,sheet
vs ws
: Dim sheet as Worksheet
在 Color()
函数中,但您随后设置了 ws = ...
。
反正放错地方了,需要移到Fill_Color_Click()
:
Private Sub Fill_Color_Click()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Job Card Master")
以便对范围的引用有意义。