Excel VBAの質問です。 "記入例"は灰色の文字色で、 実際に入力したら黒色にしたいのですが灰色のままになってしまいます。 黒色へ変更するにはどのようなコードにしたらよいですか。
Excel VBAの質問です。 "記入例"は灰色の文字色で、 実際に入力したら黒色にしたいのですが灰色のままになってしまいます。 黒色へ変更するにはどのようなコードにしたらよいですか。 当方はVBAがよくわかっていない者です。変な所は直して頂けるとありがたいです。 よろしくお願い致します。 ※C列は5行毎に結合されています。 Dim Maxrow As long Dim i As Long With ActiveSheet.UsedRange Maxrow = .Rows(.Rows.Count).Row - 1 End With For i = 500 To Maxrow Step 5 Const a As String = "記入例" With Range("C" & i) If Not Intersect(Target, Range("C500:C" & i)) Is Nothing Then If Target.Text = a Then Target = "" .Font.ColorIndex = 0 End If Else If Range("C" & i) = "" Then .Value = a .Font.ColorIndex = 16 End If End If End With Next i End Sub
Visual Basic・75閲覧
ベストアンサー
肝心な先頭行が書いてありませんが、これは Private Sub Worksheet_Change(ByVal Target As Range) ですよね? End If の位置が悪いです。 あと、 If Target.Text = a Then Target = "" これはいいのですか? 「記入例」と後から入力した場合そのセルは空白になってしまいます。 また、Target = ○○ を入れる場合は、都度このマクロが実行されて終了せずハングアップしました。 マクロ内ではフォントだけを処理すればいいなら下記でいいのではないでしょうか。 Private Sub Worksheet_Change(ByVal Target As Range) Const a As String = "記入例" With Target If .Row < 500 Or .Row Mod 5 <> 0 Then Exit Sub If .Value = a Then .Font.ColorIndex = 16 Else .Font.ColorIndex = 1 End If End With End Sub
コード確認と例をありがとうございます。回答を読ませてもらって、やりたいこと自体がおかしいと気付きました。 違う方法を考えます。 ありがとうございました。
質問者からのお礼コメント
ありがとうございました。
お礼日時:5/16 21:57