[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『フィルタ後に1行おきで色づけ』(アーモンド)
以下のコードで偶数行に対しては色づけできます。
しかし、別条件でフィルタをかけ、ランダムに奇数・偶数行を非表示にした場合、
1行おきの色づけが無意味になってしまいます。
フィルタ後の行非表示の見た目のまま、1行おきに色づけする方法はありますか?
Private Sub CheckBox1_Click()
Dim c As Range
Dim myRng As Range
Dim lastrow As Long
lastrow = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
Set myRng = Worksheets("Sheet1").Range("A2:AI" & lastrow)
Application.ScreenUpdating = False
If CheckBox1.Value = True Then
For Each c In myRng
If c.Row Mod 2 = 0 Then
With c.Interior
.Color = RGB(234, 241, 221)
.Pattern = xlSolid
End With
End If
Next c
Else
myRng.Cells.Interior.ColorIndex = xlNone
End If
Application.ScreenUpdating = True
End Sub
< 使用 Excel:Excel2007、使用 OS:Windows7 >
範囲選択して、数式 =MOD(ROW(),2)=0
(きんかんぽん) 2014/03/27(木) 11:33
え、それだとフィルタしたら、行番号によっては色つきの行が続いてしまったりしませんか?
コードでは書けませんが例えば条件付き書式で
=MOD(SUBTOTAL(3,$A$1:$A1),2)=0
みたいな条件では如何でしょうか? ( コナミ) 2014/03/27(木) 11:48
Private Sub CheckBox1_Click()
Dim i As Long
Dim iCou As Long
Application.ScreenUpdating = False
With Worksheets("Sheet1")
For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
If .CheckBox1.Value = True Then
If Rows(i).Hidden = False Then
iCou = iCou + 1
With .Range(.Cells(i, "A"), .Cells(i, "AI")).Interior
If iCou Mod 2 = 1 Then
.Color = RGB(234, 241, 221)
.Pattern = xlSolid
Else
.ColorIndex = xlNone
End If
End With
End If
Else
.Range(.Cells(i, "A"), .Cells(i, "AI")).Interior.ColorIndex = xlNone
End If
Next i
End With
Application.ScreenUpdating = True
End Sub
(???) 2014/03/27(木) 14:11
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.