- 締切済み
VBAでデフォルトの入力文字色を変更する
普段、Excelで文字入力する時は黒がデフォルトの入力文字色です。 これをマクロで簡単に色変更を行う事は出来るのでしょうか? イメージとしては 1・デフォルト入力文字色「黒」 2・マクロ実行 →デフォルト入力文字色「赤」になる 3・任意のセルに文字を入力する →入力文字色が「赤」になっている
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
「デフォルト」などの語句を使っていながら、質問の表現が明確でない。 「デフォルトの語句」はセルの文字列なのか、セルの値の文字列の一部なのか。 またデフォルトの語句は1つなのか複数あるのか。 そういうことを書いてない。 そういうレベルでは、この質問のVBAコードを作るのは難しかろう。 丸投げで、回答をコピペしたいということになってしまう。丸投げはしてはいけないことになっているはず。 ーー 入力後にまとめて色を変更するで良いなら、 エクセルの置換操作で(置換前と置換後を同じデフォルト語句とし)置換後の書式でもじれつフォント色などを指定してマクロの記録を採ってみたら。 ただセルの文字列全体が色変わりする。 もしデフォルト文字部分だけにしたいなら、 (1)デフォルト語句で検索(ワイルドカード(*つき)で検索)ー>マクロの記録で勉強 (2)デフォルト語句が出現するセルがわかったところで,INSTR関数でデフォルト語句の先頭位置を求める。そこからデフォルト文字列の文字長について (3)Charactersオブジェクトを使う。 http://www.big.or.jp/~seto/vbaref/vbaref3.htmなど、Googleで 「エクセル characters」で照会のこと。 (4)ただしFindメソッドは第2回目以後の繰り返し検索FindNext の使い方が初心者には難しい。しかしWEBには記事が沢山出ているから まねすれば良いといえる。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 シートモジュールに貼り付けてください。 '------------------------------------------- Private Sub Worksheet_Change(ByVal Target As Range) If Len(Target.Cells(1).Value) > 0 Then Target.Font.ColorIndex = 3 Else Target.Font.ColorIndex = xlAutomatic End If End Sub 細かい条件があるのかもしれませんが、出だしとしては、このぐらいにしておきます。 Target.Cells(1).Value にあるように、貼り付けの場合は、1つのセルしか色がつきません。 それから、後、色を元に戻すときがあるはずだと思います。 ThisWorkbook モジュールに貼り付けます。 '------------------------------------------- Private Sub Workbook_BeforeClose(Cancel As Boolean) Worksheets("Sheet1").UsedRange.Font.ColorIndex = xlAutomatic End Sub たとえば、このようにすればどうかと思います。 注:セルの中に、エラー値があると、マクロがとまってしまいます。そういう可能性がある場合は、これらのマクロの上と下に、 On Error Resume Next 'マクロコード On Error Goto 0 ではさんであげれば、マクロは止まりません。
- kmetu
- ベストアンサー率41% (562/1346)
Cells.Select Selection.Font.ColorIndex = 3 でいかがですか
お礼
ご回答ありがとうございます。 説明不足でした。 「既に入力しているセルや文字に影響を与えずに、マクロ実行後のデフォルトの文字入力色を「赤(任意の色)」にする方法が知りたいです。 kmetuさんの方法ですと、既に入力している文字色まで「赤」になってしまいますので、求めているものとは違いました。申し訳ございません。