エクセルで楽々校務

学校現場で使えるエクセルファイルや小技の紹介をしています。掘り出し物があるかもしれません。あと、今までの実践での疑問点もつぶやきます。

【VBA】奇数行範囲で重複チェックをするマクロ

時間割編成等で、AB週混合で時間割表を作成した場合に役に立ちそうです。

範囲が飛び飛びだと、worksheetfunction.countif(範囲,検索値)>1 はうまく動作しません。

またfindは補助記述が多くてあまり使いたくありません。

発想を変えて、for nextループ内でoffsetでセルをずらせていき、同一な値の場合、赤で塗りつぶすマクロを組んでみました。

offsetを使うと、ほとんど処理速度も落ちない気がします。

↓コード(備忘録)

Sub 奇数行の重複チェック()

Dim rng, rng2 As Variant
Dim c, r, rr As Long

Range("E3:AH33").Interior.ColorIndex = 0 '★全範囲一旦透明色

For c = 5 To 34 '列
For r = 3 To 33 Step 2 '行
For rr = 2 To 33 - r Step 2 'オフセット

Set rng = Cells(r, c)
Set rng2 = rng.Offset(rr, 0) '★
'重複チェック
If rng = rng2 Or rng = Cells(28, c) Then '28行目は例外で加える
rng.Interior.ColorIndex = 3 '赤
End If

next

next

next


End Sub

 

では、また(^^)/