Excel VBA質問箱 IV

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

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


1645 / 13644 ツリー ←次へ | 前へ→

【72898】Excel VBA セル内の文字列操作について momotoki 12/10/3(水) 15:37 質問[未読]
【72899】Re:Excel VBA セル内の文字列操作について ウッシ 12/10/3(水) 16:20 回答[未読]
【72900】Re:Excel VBA セル内の文字列操作について momotoki 12/10/3(水) 19:35 回答[未読]
【72902】Re:Excel VBA セル内の文字列操作について ウッシ 12/10/4(木) 12:25 回答[未読]

【72898】Excel VBA セル内の文字列操作について
質問  momotoki  - 12/10/3(水) 15:37 -

引用なし
パスワード
   例えば、A列(A2より下のセル)のセル内にある文字列が、それぞれ対応するB列(B2より下のセル)のセル内にあった場合、該当文字列のフォントの色を変えたい(例えば「赤」)のですが、VBAで一括処理とかできるのでしょうか?

<例>
A列      B列
テスト    このテストは・・・ → 「テスト」の部分のみ赤色にしたい。
サンプル   サンプル     → 文字列全部分の「サンプル」を赤色にしたい。

どうかご教示の程よろしくお願いいたします。

【72899】Re:Excel VBA セル内の文字列操作について
回答  ウッシ  - 12/10/3(水) 16:20 -

引用なし
パスワード
   こんにちは。momotoki さん:

Sub test()
  Dim r As Range
  Dim i As Long
  For Each r In Range("B2", Cells(Rows.Count, 2).End(xlUp))
    i = InStr(1, r.Value, r(1, 0).Value)
    If i > 0 Then
      r.Characters(Start:=i, Length:=Len(r(1, 0).Value)) _
        .Font.ColorIndex = 3
    End If
  Next
End Sub

エラー処理とかは考慮してないです。

【72900】Re:Excel VBA セル内の文字列操作について
回答  momotoki  - 12/10/3(水) 19:35 -

引用なし
パスワード
   あ、ありがとうございます。
すごいです。できました。
こんなこともできるんですね。。。。

因みになんですが、

I列の文字列からJ列とL列の対象文字列という感じで複数のセル列に指定はできるのでしょうか?

追加質問で大変恐縮ですが、ご教示の程よろしくお願いいたします。

【72902】Re:Excel VBA セル内の文字列操作について
回答  ウッシ  - 12/10/4(木) 12:25 -

引用なし
パスワード
   こんにちは

I列をループして、J、L列を処理してます。

Sub test2_1()
  Dim r As Range
  Application.ScreenUpdating = False
  For Each r In Range("I2", Range("I" & Rows.Count).End(xlUp))
    test2_2 r, "J1"
    test2_2 r, "L1"
  Next
  Application.ScreenUpdating = True
End Sub

Sub test2_2(t As Range, c As String)
  Dim i As Long
  Dim j As Long
  With t.EntireRow.Range(c)
    i = InStr(1, .Value, t.Value)
    If i > 0 Then
      .Characters(Start:=i, Length:=Len(t.Value)) _
        .Font.ColorIndex = 3
      j = i + Len(t.Value)
      Do Until j > Len(.Value)
        i = InStr(j, .Value, t.Value)
        If i > 0 Then
          .Characters(Start:=i, Length:=Len(t.Value)) _
            .Font.ColorIndex = 3
          j = i + Len(t.Value)
        Else
          Exit Do
        End If
      Loop
    End If
  End With
End Sub

1セルに対象文字が複数ある場合にも対応しておきました。

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