最新閲覧日:
選択範囲内(縦一列)で同じ値が入力されたセルの色を黄色にするプログラムを作りました。
Sub 選択範囲内で同じ値が入力されたセルを調べる_縦()
Dim startrow As Byte
Dim lasrow As Byte
Dim i As Long
Dim j As Byte
Dim atai
If TypeName(Selection) <> "Range" Then Exit Sub
startrow = ActiveCell.Row '最初のセルの列番号を取得
lasrow = Selection.Rows(Selection.Rows.Count).Row '最終列番号を取得
'同じ値が入力されているセルを黄色にする
For i = startrow To lasrow - 1
If ActiveSheet.Cells(i, ActiveCell.Column).Interior.ColorIndex = xlNone Then
atai = ActiveSheet.Cells(i, ActiveCell.Column).Value
For j = i + 1 To lasrow
If atai = ActiveSheet.Cells(j, ActiveCell.Column).Value Then
ActiveSheet.Cells(i, ActiveCell.Column).Interior.ColorIndex = 6
ActiveSheet.Cells(j, ActiveCell.Column).Interior.ColorIndex = 6
End If
Next
End If
Next
End Sub
但し、上記のプログラムでは選択範囲内に結合セルがあるとエラーになってしまいます。
どなたか、解決方法をご教授頂けませんでしょうか?
宜しくお願い致しますm(._.)m
A 回答 (2件)
- 最新から表示
- 回答順に表示
- ベストアンサーのみ表示
No.2ベストアンサー
- 回答日時:2009/05/18 20:23
こんな感じ?
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
hige_082さん、ありがとうございます。
すごい、こんな簡潔なコードで可能だったんですね!
selection(i)という使い方、iやjの設定方法など、とても勉強になりました。ありがとうございましたm(._.)m
No.1
- 回答日時:2009/05/18 15:28
よくわかんないけど、対象が選択範囲で、その中に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の値が同じであれば、両方のセルの色を黄色にしたいのです。
説明が下手で申し訳ありません。宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するQ&A
- 1 If Not c Is Nothing Then ~延々処理が続く~ End If
- 2 マクロで100マス計算! Dim i,j As Integer For i = 2 ToRang
- 3 ActiveCellの両端の列番号の得方
- 4 マクロ初心者です。 インデックスが有効範囲にありませんとエラーになりました。 Dim Open
- 5 Excel VBA Interior.Color
- 6 DataGridViewのRowsにメソッド追加
- 7 #If VBA7 Thenに関して
- 8 dimを使わずにredimを使う場合
- 9 VBA Column型は存在しないの?
- 10 byte配列の内容をstringにコピーしたい
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
任意フォルダから画像をすべて...
-
5
VBA 名前を検索して該当データ...
-
6
エクセル・マクロ シートの非...
-
7
MSCOMCTL.OCXのアップデートの方法
-
8
VBS実行時エラー オブジェクト...
-
9
エクセルVBAでVLookupを使って...
-
10
Excel VBA別ブックのシートをコ...
-
11
Excelで、あるセルの値に応じて...
-
12
InternetExplorer.Application...
-
13
VBAでシステム音を鳴らす方法
-
14
VBAのエラー発生場所をメッセー...
-
15
エクセルVBA 図形の選択法は?
-
16
エクセルVBA 文字列の分解について
-
17
【Excel VBA】CreateObjectで作...
-
18
vbaでの参照設定を聞きたいです
-
19
エクセル キャッシュメモリー...
-
20
ワークシート上のコントロール...
おすすめ情報