要修正箇所1
End With
の後ろにEnd If
が必要です。
それでまずは一旦動作はしますが、望まれている動作はしないと思います。
要修正箇所2
Target.Row
で取得できるのはTarget(変更したセル)の行番号です。
その行番号に & "2:2" & Target.Row
を実施すると文字列連結されます。
1行目で実行すれば結果は "12:21" となり、
2行目で実行すれば、"22:22"、3行目では"32:23"となります。
その範囲に対してselect
を実施しているので、
1行目の編集に対し、12行目から21行目を選択、
2行目の編集に対し、22行目だけを選択、
3行目の編集に対し、23行目から32行目を選択しています。
続く処理で書式設定がされています。
& "2:2" &
を& ":" &
に変えれば編集した行全体を書式設定できます。
追加修正案
もし編集集するセル側の判断を絞りたい、例えば「B列に入力した場合だけ処理実施したい」といった場合、
If
を使って条件付けを行う必要があります。
また、キーワードごとに色付けを変えたい場合なども同様に条件を付ける必要があるでしょう。
実現するサンプルを記載すると下記の様になります。
code sample
VBA
1Private Sub Worksheet_Change(ByVal Target As Range)
2 If Target.Cells.Column = 2 Then ' 列番号 2 = B列
3 If Target.Value = "名前" Or Target.Value = "住所" Then
4
5 Dim ColorNumber As Long
6 If Target.Value = "名前" Then
7 ColorNumber = -16776961 ' 赤
8 ElseIf Target.Value = "住所" Then
9 ColorNumber = 65535 ' 黄
10 End If
11
12 ' 文字色変更
13 With Rows(Target.Row & ":" & Target.Row)
14 .Font.Color = ColorNumber
15 End With
16
17 ' セル背景色変更
18 'With Rows(Target.Row & ":" & Target.Row).Interior
19 '冗長 'Rows(Target.Row & ":" & Target.Row).Select
20 '冗長 'With Selection.Interior
21 ' 不要'.Pattern = 0
22 ' 不要'.PatternColorIndex = xlAutomatic
23 '.Color = ColorNumber
24 ' 不要'.TintAndShade = 0
25 ' 不要'.PatternTintAndShade = 0
26 'End With
27
28 End If
29 End If
30
31End Sub
エラー処理やマジックナンバー(埋め込まれた固定値)対策など、
その他、必要な対応は別途ご自身でお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。