こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

 条件付き書式での色付けで以下のコードを教えて頂いたんですが、色付けを

 条件付き書式での色付けで以下のコードを教えて頂いたんですが、色付けを
適用する範囲をどうやって変更すればいいのでしょうか?
もしよろしければ、範囲の変更の仕方と、コードの意味を教えて頂けますか?
めんどうですがよろしくお願いします・・・。



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Columns(3).Interior.ColorIndex = xlNone
Dim i, j As Long
For i = 1 To Cells(Rows.Count, 3).End(xlUp).Row
For j = 1 To Cells(Rows.Count, 6).End(xlUp).Row
If Cells(i, 3) = Cells(j, 6) Then
Cells(i, 3).Interior.ColorIndex = Cells(j, 7).Interior.ColorIndex
End If
Next j
Next i
End Sub

投稿日時 - 2010-10-27 14:05:46

QNo.6278786

すぐに回答ほしいです

質問者が選んだベストアンサー

こんばんは!
前回コードを投稿した者です!
コードの書き方は人それぞれですので、「これでないとダメ!」ということはありません。
十人十色の書き方ができると思います。
ただ、約束事はありますのでそれをちゃんと記述すればマクロは動いてくれるはずです。

最初からできる人はいませんので、ボチボチ挑戦してみてください。
「マクロの記録」から始める方法もあるかと思います。
(実際はここまで必要ないだろう!というコードが表示されます)

さて、本題ですが前回のコードの説明は mu2011さんが詳しく説明してくださっているのでそちらを参考にしてみてください。

尚、前回の補足に「データはA列の5行目からH列の最終行まで」とありましたので
もう一度画像とコードをアップしておきます。
(コード内に簡単なコメントを入れています。)
そして、mu2011さんの補足の中にある変数「i」や「j」の質問がありましたが、
「a」や「b」でも何でもOKです。当方の習慣で勝手に宣言しているだけです。

Private Sub Worksheet_SelectionChange(ByVal Target As Range) '←この行から
Dim i, j, k, L As Long '変数(長整数型)の宣言
L = ActiveSheet.UsedRange.Rows.Count 'Sheetの最終行取得
Range(Cells(5, 1), Cells(L, 8)).Interior.ColorIndex = xlNone 'A5~H列最終行の色を消す
For i = 5 To L '行番号(5行目~A列の最終列まで)
For j = 1 To 8 '列番号(A列からH列まで)
For k = 2 To Cells(Rows.Count, 10).End(xlUp).Row 'J列の2行目~最終行まで
If Cells(k, 10) = Cells(i, j) Then 'セル(k行,J列)=セル(i行、j列)の場合
Cells(i, j).Interior.ColorIndex = _
Cells(k, 11).Interior.ColorIndex '(i行,j列)のセルの色は(k行,K列)の色に!
End If
Next k '次の「k」へ(kの最後まで繰り返し)
Next j '次の「j」へ(jの最後まで繰り返し)
Next i '次の「i」へ(iの最後まで繰り返し)
End Sub '←この行まで

前回同様、Sheet見出し上で右クリック → コードの表示にコピー&ペーストしてください。

上記のコードがベストではないと思います。
他の方ならもっと良いコードを記述されるかもしれません。
焦らずにじっくり頑張ってみてくださいね。m(__)m

投稿日時 - 2010-10-27 19:57:49

お礼

 できましたー!!!!!!
最後まで付き合って頂き本当にありがとうございました。
めちゃくちゃ感動しています。
ありがとうございました!!

投稿日時 - 2010-10-27 21:25:30

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

NO1です。
曖昧な記載がありましたので訂正します。
Rows.Countはその列の最終行データ ⇒ Rows.Countはその列のデータ最終行 

投稿日時 - 2010-10-27 15:14:42

お礼

 解決できました。
わかりづらい説明に付き合って頂きありがとうございました。

投稿日時 - 2010-10-27 21:27:22

ANo.1

実行契機は、同シート内任意セルが変化した時、設定範囲はC1:C最終行で、F列に同一の値があれば、F列に対応するG列の書式を設定するようにご質問者が提起した要件に基づいてコード化されているのだから類推できると思うが如何でしょうか。

実行契機:Private Sub Worksheet_SelectionChange(ByVal Target As Range)
適用範囲:For i = 1 To Cells(Rows.Count, 3).End(xlUp).Row
色付け条件:For j = 1 To Cells(Rows.Count, 6).End(xlUp).Row
      If Cells(i, 3) = Cells(j, 6) Then
      Cells(i, 3).Interior.ColorIndex = Cells(j, 7).Interior.ColorIndex

因みにCells(行,列)の3はC列、6はF列、Rows.Countはその列の最終行データです。

投稿日時 - 2010-10-27 14:44:07

補足

 さっそくの回答ありがとうございます。
実際はC列だけではなく、もっと広い範囲なんです。(A列からH列の5行目から下全部)
どの箇所をどう変更すれば良いのか知りたいんです。何度もすみません・・・・。
ちなみに i とか j は何の意味ですか??
初心者の無知に付き合って頂いてありがとうございます。
どうぞよろしくおねがいします。

投稿日時 - 2010-10-27 17:38:12

あなたにオススメの質問