
選択範囲内(縦一列)で同じ値が入力されたセルの色を黄色にするプログラムを作りました。
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
No.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
hige_082さん、ありがとうございます。
すごい、こんな簡潔なコードで可能だったんですね!
selection(i)という使い方、iやjの設定方法など、とても勉強になりました。ありがとうございましたm(._.)m
No.1
- 回答日時:
よくわかんないけど、対象が選択範囲で、その中に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を見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
【VBA】指定したセルと同じ値で、別シートにあるセルに移動するには?
Visual Basic(VBA)
-
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
-
4
【VBA】特定の範囲で同じ値を含むセルの色を変える
その他(Microsoft Office)
-
5
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
6
【vba】指定範囲の中に任意の文字があるときの条件分岐
Excel(エクセル)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
9
VBAで特定の文字が入力されたセルを選択
Excel(エクセル)
-
10
VBAで繰り返しコピーしながら下へ移動させる方法
Excel(エクセル)
-
11
VBAで空白セルにのみ数値を代入する方法
Excel(エクセル)
-
12
エクセルマクロで特定の範囲が空白という条件
Excel(エクセル)
-
13
指定したセルと同じ日付の入ったセルを選択するVBA
その他(Microsoft Office)
-
14
Excel VBAでのWorksheet_Changeが動作しない原因
Excel(エクセル)
-
15
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
16
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
17
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
18
(Excel VBA)and,orについて
Excel(エクセル)
-
19
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
20
VBA コンボボックスで選んだ値を取得するには
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
【Excel VBA】指定行以降をクリ...
-
5
screenupdatingが機能しなくて...
-
6
Excel VBA、 別ブックの最終行...
-
7
セル色なしの行一括削除
-
8
エクセルvba:自己セルの情報取...
-
9
エクセルの複数データーをダブ...
-
10
EXCELのVBA-フィルタ抽出後の...
-
11
RC表示に変数を入れる
-
12
B列に特定の文字列が入っている...
-
13
Excel vbaで特定の文字以外が入...
-
14
i=cells(Rows.Count, 1)とi=cel...
-
15
Excelのプルダウンで2列分の情...
-
16
ユーザーフォーム内のテキスト...
-
17
【EXCEL VBA】Range("A:A").Fi...
-
18
セルの結果でマクロ実行
-
19
Excelで指定した日付から過去の...
-
20
Excel VBA メール作成について ...
おすすめ情報
公式facebook
公式twitter