• ベストアンサー

Excelのセル内で、指定の文字だけ色をつけるには?

Excelのセル内で、指定文字だけ色をつけたいのですが、そのようなことは可能なのでしょうか? また、その文字をロックして削除できないようにしたいのですが…ご教授願います。 指定の文字は数種類あります。 【例】↓セル内とすると…(黒記号を指定文字とする) ○○●○○○◆○○▲○○○○●●○○○○○○ 上記のような文字列になっています。指定文字の並びは不規則です。 OS→Windows2000 アプリケーション→office2000professionalのExcel です。どなたかご返答お待ちしております。

質問者が選んだベストアンサー

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.3

範囲を指定して、次のコードを実行すると、ご希望の状態になると思います。 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)
回答No.4

>正規表現や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)
回答No.2

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"だけを赤文字に変換します。 セル範囲や色などはご自分で調整ください。

938spitz
質問者

補足

ありがとうございます! もし、赤字にしたい文字の文字コードが続いている場合、範囲指定は出来ませんか? さらに赤文字をロック(読取専用みたいに)することは可能でしょうか? あと、基本的な質問なのですが、セル内の文字数は制限されてますか?制限があるとすれば具体的にどのぐらいですか?

  • hirumin
  • ベストアンサー率29% (705/2376)
回答No.1

文字の色は、文字を選択して右クリック、[セルの書式設定]の中の「色」で指定できます。 指定文字だけの固定は出来ないのではないでしょうか。

938spitz
質問者

補足

ご返答ありがとうございます。 ですが、ファイル中に大量にあるため、ひとつずつ[セルの書式設定]の中の「色」で指定する方法だと、とても時間がかかってしまいます… 正規表現やVBA、マクロなど自動処理で作業したいのですが…

関連するQ&A

専門家に質問してみよう