- ベストアンサー
ExcelVBAで選択範囲内の同じ値のセルを調べる方法
- ExcelVBAで選択範囲内(縦一列)で同じ値が入力されたセルを調べるプログラムを作成しました。セルに同じ値が入力されている場合、それらのセルの背景色を黄色に変えます。
- しかし、結合セルが選択範囲内に存在する場合、プログラムがエラーになってしまいます。結合セルがあっても正常に動作するように解決方法を探しています。
- どなたか、結合セルが含まれる選択範囲内で同じ値のセルを正しく調べる方法を教えていただけませんか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じ? Sub 選択範囲内で同じ値が入力されたセルを調べる_縦() Dim i As Long Dim j As Long If TypeName(Selection) <> "Range" Then Exit Sub For i = 1 To Selection.Count - 1 For j = Selection.Count To i + 1 Step -1 '同じ値が入力されているセルを黄色にする If Selection(i).Value = "" Then Exit For If Selection(i).Value = Selection(j).Value Then Selection(i).Interior.ColorIndex = 6 Selection(j).Interior.ColorIndex = 6 End If Next j Next i End Sub
その他の回答 (1)
- fujillin
- ベストアンサー率61% (1594/2576)
よくわかんないけど、対象が選択範囲で、その中にActiveCellと同じ値があれば黄色にするということでいいのでしょうか? こんな感じ? Sub test() Dim rng As Range, c As Range, v If TypeName(Selection) <> "Range" Then Exit Sub Set rng = Selection v = ActiveCell.Value For Each c In rng If c.Interior.ColorIndex = 6 Then c.Interior.ColorIndex = xlNone If c.Value = v Then c.Interior.ColorIndex = 6 Next c End Sub
お礼
fujillinさん、ありがとうございます。 例えばA1からA100までデータが入力されていて、それらの値はすべて違うものであるはず → 同じ値があれば入力ミスなので、それをチェックしたい。というのが目的です。 A1からA100までを選択している状態でプログラムを実行し、A17とA69の値が同じであれば、両方のセルの色を黄色にしたいのです。 説明が下手で申し訳ありません。宜しくお願い致します。
お礼
hige_082さん、ありがとうございます。 すごい、こんな簡潔なコードで可能だったんですね! selection(i)という使い方、iやjの設定方法など、とても勉強になりました。ありがとうございましたm(._.)m