我有一个给定的som(一般)范围,我想要一个函数来改变visual basic函数中每隔一行的背景颜色。
当然可以通过它循环并使用mod函数,但我认为必须有更快的东西。
提前致谢。
编辑:我知道条件格式化,但我需要在Ranges上反复使用大小不同的东西,所以我希望它是一个我可以作为sub的一部分运行的函数。 / p>
答案 0 :(得分:1)
使用此
Sub ChangeEverySecond()
Dim r As Range
Set r = Range("A2:A20")
Dim tmp As Range, i As Integer
For Each tmp In r.Cells
i = i + 1
If i Mod 2 = 0 Then tmp.Interior.Color = RGB(127, 187, 199)
Next tmp
End Sub
编辑1:
使用函数进行条件格式化:
=IF(MOD(ROW();2)=0;TRUE;FALSE)
答案 1 :(得分:0)
在Excel中,您可以使用conditional formatting为每隔一行着色。
答案 2 :(得分:0)
请在下面找到不使用MOD功能的解决方案
Sub ColourEveryOtherRow()
'###############################
'Macro developed by Paolo Succo
'###############################
Dim firstCol As Long, lastRow As Long, lastCol As Long
Dim x As Long, Cnt As Long
Dim index As Boolean
Dim dataRng As Range
'speeding up the code
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'change the range as convenient
Set dataRng = ActiveSheet.Range("A2:AX10000")
'set the range parameters
lastRow = dataRng.Rows.Count
firstCol = dataRng.Column
lastCol = dataRng.Columns.Count
x = 2
For Cnt = 2 To lastRow + 1
index = (Int(x / 2) = x / 2)
'RBG(242, 242, 242) is grey, change as convenient
If index = True Then
Range(Cells(Cnt, firstCol), Cells(Cnt, firstCol + lastCol - 1)).Interior.Color = RGB(242, 242, 242)
Else
Range(Cells(Cnt, firstCol), Cells(Cnt, firstCol + lastCol - 1)).Interior.Color = xlColorIndexNone
End If
x = x + 1
Next Cnt
Application.Calculation = xlCalculationAutomatic
End Sub
如果有这个帮助,请告诉我。
此致
保