人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

EXCLEのマクロについて質問です。
セルRに「あ」?「お」の5つの文字を入力する条件付き書式で、セルRに文字が入力されると対応する条件でRセルの文字色、セル色を塗り分け、かつ「お」の場合はC?Oのセルに色を塗りたいんです。
そこで下記のマクロを作ったんですが、C?O全ての列に色がついてしまいました。入力した行だけ色を塗りたいんですが、どうしたらいいのでしょうか。
素人なので、コードにコメントがあると有難いです。

----------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim intColor As Integer
Dim celcolor As Integer


If Target.Count > 1 Then Exit Sub
If Intersect(Target, Range("R:R")) Is Nothing Then Exit Sub

Select Case Target.Value

Case Is = "あ"
intColor = 1
celcolor = 2
Case Is = "い"
intColor = 1
celcolor = 2
Case Is = "う"
intColor = 1
celcolor = 3
Case Is = "え"
intColor = 1
celcolor = 4
Case Is = "お"
intColor = 1
celcolor = 5
Range("c:o").Interior.ColorIndex = celcolor
End Select

Target.Font.ColorIndex = intColor
Target.Interior.ColorIndex = celcolor
End Sub

●質問者: omoro
●カテゴリ:コンピュータ
✍キーワード:as CASE EXIT nothing SELECT
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Mook
●35ポイント ベストアンサー

コメントは少ないですが、下記のようでどうでしょうか。

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim intColor As Integer
 Dim celcolor As Integer

'// R 行がなければ終了
 If Intersect(Target, Range("R:R")) Is Nothing Then Exit Sub
 
 Dim r As Range
 Application.EnableEvents = False

'// 一度に複数行の変更に対応(コピー&貼付け等)
 For Each r In Intersect(Target, Range("R:R"))
 Select Case Target.Value
 Case "あ"
 intColor = 1
 celcolor = 2
 Case "い"
 intColor = 1
 celcolor = 2
 Case "う"
 intColor = 1
 celcolor = 3
 Case "え"
 intColor = 1
 celcolor = 4
 Case "お"
 intColor = 1
 celcolor = 5
'// 行の指定を追加
 Range("C" & r.Row & ":O" & r.Row).Interior.ColorIndex = celcolor
 End Select

 Target.Font.ColorIndex = intColor
 Target.Interior.ColorIndex = celcolor
 Next
 Application.EnableEvents = True
End Sub
◎質問者からの返答

ありがとうございます!

先ほど、動作確認したら意図した動作となっておりました。

ちょっとした事で結果が変わるので難しいですね。マクロって。


2 ● きゃづみぃ
●35ポイント

Range("c:o").Interior.ColorIndex = celcolor

の行を

Range(Cells(Target.Row, "c"), Cells(Target.Row, "o")).Interior.ColorIndex = celcolor

に変えれば 入力した行だけ色が 変わります。

"c:o"

この指定だと C列からO列すべてと なります。

入力した行は Target.Rowになりますので、

このC列の行からO列の行まで というように変えればいいのです。

◎質問者からの返答

添削ありがとうございます!

期待した動作となりました!!

お二人にイルカ賞をあげたいですが、今回は先着順とさせて頂きますね。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ