我是VBA的新手,因此非常感谢您的帮助。对于特定范围的单元格,我有if语句。因此,对于 A25:A31 ,如果cells.value = 1
,那么我要在单元格(x,4)(x,7)(x,10)(x,13)满足条件的同一行都具有相同的背景色。我尝试过偏移,但它仅适用于一个偏移选择而不是多个。这是我的代码:
Set Rng1 = Range("A25:A31")
Set Rng2 = Range("B25:B31")
For Each cell In Rng1
If cell.Value = "1" Then cell.Offset(0, 1).Cells.Interior.Color = Range("B12").Interior.Color
If cell.Value = "2" Then cell.Offset(0, 1).Cells.Interior.Color = Range("B13").Interior.Color
If cell.Value = "3" Then cell.Offset(0, 1).Cells.Interior.Color = Range("B14").Interior.Color
If cell.Value = "4" Then cell.Offset(0, 1).Cells.Interior.Color = Range("B15").Interior.Color
If cell.Value = "5" Then cell.Offset(0, 1).Cells.Interior.Color = Range("B16").Interior.Color
Next Cell
因此,我基本上希望可以执行以下操作:
If cell.Value = "1" Then cell.Offset(0, 1 & 4 & 7 & 10).Cells.Interior.Color = Range("B12").Interior.Color
因此,不仅更改了偏移量的一列,还更改了右侧的单元格,四个单元格和七个单元格等。
感谢您的帮助。
答案 0 :(得分:0)
您可以尝试以下方法:
Option Explicit
Sub Test()
Dim C As Range
With ThisWorkbook.Sheets(1) 'change this for the name of your sheet
For Each C In .Range("A25:A31")
If C = 1 Then
Union(C, .Cells(C.Row, 4), .Cells(C.Row, 7), .Cells(C.Row, 10), .Cells(C.Row, 13)).Interior.Color = 2 'whatever colour you need
End If
Next C
End With
End Sub
答案 1 :(得分:0)
Dim v
Set Rng1 = Range("A25:A31")
Set Rng2 = Range("B25:B31")
For Each cell In Rng1.Cells
v = cell.Value
Select Case v
Case 1,2,3,4,5:
cell.EntireRow.Range("D1,G1,J1,M1").Interior.Color = _
Range("B11").Offset(v, 0).Interior.Color
End Select
Next Cell
请注意,Range()
与EntireRow有关 ,因此在编写时它将始终在该行上工作。
答案 2 :(得分:0)
我同意@JohnColeman的评论,但是如果您想要vba,我认为这就是您想要的。但是@TimWilliams更高级。
Sub ColorCells()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
For Each cel In ws.Range("A25:A31")
If cel.Value = 1 Then
cel.Resize(, 2).Interior.Color = Range("B12").Interior.Color
cel.Offset(, 3).Interior.Color = Range("B12").Interior.Color
cel.Offset(, 6).Interior.Color = Range("B12").Interior.Color
cel.Offset(, 9).Interior.Color = Range("B12").Interior.Color
ElseIf cel.Value = 2 Then
cel.Resize(, 2).Interior.Color = Range("B13").Interior.Color
cel.Offset(, 3).Interior.Color = Range("B13").Interior.Color
cel.Offset(, 4).Interior.Color = Range("B13").Interior.Color
cel.Offset(, 9).Interior.Color = Range("B13").Interior.Color
ElseIf cel.Value = 3 Then
cel.Resize(, 2).Interior.Color = Range("B14").Interior.Color
cel.Offset(, 3).Interior.Color = Range("B14").Interior.Color
cel.Offset(, 6).Interior.Color = Range("B14").Interior.Color
cel.Offset(, 9).Interior.Color = Range("B14").Interior.Color
ElseIf cel.Value = 4 Then
cel.Resize(, 2).Interior.Color = Range("B15").Interior.Color
cel.Offset(, 3).Interior.Color = Range("B15").Interior.Color
cel.Offset(, 6).Interior.Color = Range("B15").Interior.Color
cel.Offset(, 9).Interior.Color = Range("B15").Interior.Color
ElseIf cel.Value = 5 Then
cel.Resize(, 2).Interior.Color = Range("B16").Interior.Color
cel.Offset(, 3).Interior.Color = Range("B16").Interior.Color
cel.Offset(, 6).Interior.Color = Range("B16").Interior.Color
cel.Offset(, 9).Interior.Color = Range("B16").Interior.Color
End If
Next cel
End Sub