- ベストアンサー
Excelのセル内で、指定の文字だけ色をつけるには?
Excelのセル内で、指定文字だけ色をつけたいのですが、そのようなことは可能なのでしょうか? また、その文字をロックして削除できないようにしたいのですが…ご教授願います。 指定の文字は数種類あります。 【例】↓セル内とすると…(黒記号を指定文字とする) ○○●○○○◆○○▲○○○○●●○○○○○○ 上記のような文字列になっています。指定文字の並びは不規則です。 OS→Windows2000 アプリケーション→office2000professionalのExcel です。どなたかご返答お待ちしております。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
範囲を指定して、次のコードを実行すると、ご希望の状態になると思います。 Sub SetStrColor() Dim Target Dim Rng As Range ' ------指定事項 ----------- Target = Array("●", "◆", "▲") Const Col = 3 ' <---- 色をインデックスコードで指定 'Default時の例: 赤=3、青=5、黄=6、ピンク=7、水=8、緑=10、オレンジ=46、茶=53 ' ------------------------- Dim N As Integer Dim A As Integer For Each Rng In Selection Rng.Font.ColorIndex = xlAutomatic ' <--- 該当しない文字は、元に戻す場合必要 If Not (Rng.Text = vbNullString Or Rng.HasFormula) Then For N = 1 To Len(Rng.Text) For A = 0 To UBound(Target) If Mid(Rng.Text, N, 1) = Target(A) Then Rng.Characters(Start:=N, Length:=1).Font.ColorIndex = 3 End If Next A Next N End If Next Rng End Sub
その他の回答 (3)
- Wendy02
- ベストアンサー率57% (3570/6232)
>正規表現やVBA、マクロなど自動処理で作業したいのですが… いくつか出ていますが、正規表現がお分かりになるようなので、正規表現でちょっと作ってみました。 Sub ColoringLetterRe() Dim Re As Object Dim Rng As Range Dim c As Range Dim Matches As Object Dim LetterLocation() As Variant Dim Match As Object Dim i As Long, j As Long Const myColor As Integer = 3 '赤:色インデックス ColorIndex Const myPattern As String = "●|▲|■|◆" '必ず、同じ文字長にすることに限ります。 Const SeachLetterLength As Integer = 1 '検索する個々の文字列長 Application.ScreenUpdating = False Set Rng = Selection 'マウスで選択 Set Re = CreateObject("VBScript.RegExp") With Re .Pattern = myPattern .Global = True For Each c In Rng If Not c.HasFormula Then c.Font.ColorIndex = -4105 If .Test(c.Text) Then Set Matches = .Execute(c.Text) For Each Match In Matches ReDim Preserve LetterLocation(i) LetterLocation(i) = Match.FirstIndex i = i + 1 Next Match For j = LBound(LetterLocation) To UBound(LetterLocation) c.Characters(Start:=LetterLocation(j) + 1, Length:=SeachLetterLength) _ .Font.ColorIndex = myColor Next j Erase LetterLocation i = 0 End If End If Next c End With Set Re = Nothing Set Rng = Nothing Application.ScreenUpdating = True End Sub
- age_momo
- ベストアンサー率52% (327/622)
VBAを使ってということであれば、各文字を判定して合っていれば色を変換するという方針でいいでしょうか。 Private Sub Henkan(Ichi As Integer) With ActiveCell.Characters(Start:=Ichi, Length:=1).Font .ColorIndex = 3 End With End Sub Sub test() Dim ct As Integer Dim ct2 As Integer Dim ct3 As Integer Dim flag As Integer Dim Kigou As String For ct = 1 To 200 For ct2 = 1 To 2 Cells(ct, ct2).Select For ct3 = 1 To 20 Kigou = Mid(Selection.Text, ct3, 1) If Kigou = "M" Then Henkan (ct3) Next Next Next End Sub セルA1からB200までに入力されている文字(20字まで)の内、"M"だけを赤文字に変換します。 セル範囲や色などはご自分で調整ください。
- hirumin
- ベストアンサー率29% (705/2376)
文字の色は、文字を選択して右クリック、[セルの書式設定]の中の「色」で指定できます。 指定文字だけの固定は出来ないのではないでしょうか。
補足
ご返答ありがとうございます。 ですが、ファイル中に大量にあるため、ひとつずつ[セルの書式設定]の中の「色」で指定する方法だと、とても時間がかかってしまいます… 正規表現やVBA、マクロなど自動処理で作業したいのですが…
補足
ありがとうございます! もし、赤字にしたい文字の文字コードが続いている場合、範囲指定は出来ませんか? さらに赤文字をロック(読取専用みたいに)することは可能でしょうか? あと、基本的な質問なのですが、セル内の文字数は制限されてますか?制限があるとすれば具体的にどのぐらいですか?