对于我的工作表,我编写了一个VBA代码来隐藏一些选定的列。隐藏这些列后,我想标记并为一行着色。之后,我想取消隐藏列,以便我回到原始工作表,但所选行完全着色。
VBA工作得很好。我的问题是,当我选择一行(点击行号)并对其进行着色时,当我取消隐藏列时,隐藏在列中的行的单元格不会着色。
即使某些单元格被宏隐藏,有没有机会为整行着色?
由于
答案 0 :(得分:1)
必须说我无法重现问题。使用如下代码:
Rows(1).Interior.Color = vbBlue
对连续的所有单元格进行着色,甚至是隐藏的单元格。但是,在您的情况下,可能会使用一段代码循环遍历最后一个使用的列中的所有单元格并单独为每个单元着色。希望这能解决您的问题:
Sub SpecialLoop()
Dim cl As Range, rng As Range
Dim rw As Long
rw = 5 'Obviously just type any row here or get the rownr. some other way
Set rng = ActiveSheet.Range(Cells(rw, 1), Cells(rw, ActiveSheet.Cells(rw, Columns.Count).End(xlToLeft).Column))
For Each cl In rng
If Intersect(cl, rng.SpecialCells(xlCellTypeVisible)) Is Nothing Then
Range(cl.Address).Interior.Color = vbBlue
Else
Range(cl.Address).Interior.Color = vbBlue
End if
Next cl
End Sub
无论哪种方式,我希望你现在可以解决它:)
答案 1 :(得分:0)
感谢。我通过简单地添加以下代码行并选择了我想要着色的单元格来解决问题:
ActiveSheet.Range("A1:A1").Interior.ColorIndex = 1
当然可以修改颜色。