Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3750 / 13645 ツリー ←次へ | 前へ→

【60372】セル内の文字単位で色を塗り替えるには どんた 09/2/15(日) 0:35 質問[未読]
【60373】Re:セル内の文字単位で色を塗り替えるには kanabun 09/2/15(日) 9:44 発言[未読]

【60372】セル内の文字単位で色を塗り替えるには
質問  どんた  - 09/2/15(日) 0:35 -

引用なし
パスワード
   複数のセルに文字数がランダムで記載されています
セル毎に文字の色が変わっています
一つのセル内に黒と赤といったように文字の色が途中で変わっているセルがあります
そこで各セル内を文字単位で一文字づつ文字の色を検索し
黒であった場合に限り白く変更したく思います
下記のように書いたのですが
セル内の先頭の文字色が黒だった場合のみ
一文字めのみが白くなり二文字目以降に実行されません
ご指摘をお願いいたします。

  EndRow = ActiveCell.SpecialCells(xlLastCell).Row
  EndCol = ActiveCell.SpecialCells(xlLastCell).Column
  For C = 1 To EndCol
    For R = 1 To EndRow
      If Cells(R, C) <> "" Then
        EndLen = Len(Cells(R, C))
        For LP = 1 To EndLen
          If Cells(R, C).Font.ColorIndex =1 Then
            Cells(R, C).Characters(Start:=LP, Length:= 1).Font.ColorIndex = 2
          End If
        Next LP
      End If
    Next R
  Next C

【60373】Re:セル内の文字単位で色を塗り替えるには
発言  kanabun  - 09/2/15(日) 9:44 -

引用なし
パスワード
   ▼どんた さん:

>そこで各セル内を文字単位で一文字づつ文字の色を検索し
>黒であった場合に限り白く変更したく思います

>          If Cells(R, C).Font.ColorIndex =1 Then

ColorIndexの判定も 文字単位にします

たとえば、こんな風

  Dim c As Range
  Dim i As Long
  
  For Each c In ActiveSheet.UsedRange
    If VarType(c.Value) = vbString Then
      With c
        For i = 1 To .Characters.Count
         With .Characters(i, 1).Font
          If .ColorIndex = 1 Then .ColorIndex = 2
         End With
        Next
      End With
    End If
  Next

3750 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free