Excel VBA質問箱 IV

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

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


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

【20988】簡単な事かもしれませんが教えてください。 たけし 05/1/5(水) 22:54 質問[未読]
【20991】Re:簡単な事かもしれませんが教えてくださ... IROC 05/1/6(木) 7:18 回答[未読]
【21014】Re:簡単な事かもしれませんが教えてくださ... たけし 05/1/6(木) 19:09 質問[未読]
【21017】Re:簡単な事かもしれませんが教えてくださ... IROC 05/1/7(金) 10:14 回答[未読]
【21019】Re:簡単な事かもしれませんが教えてくださ... トシ坊 05/1/7(金) 12:52 回答[未読]
【21020】Re:簡単な事かもしれませんが教えてくださ... Kein 05/1/7(金) 14:16 回答[未読]
【21027】Re:簡単な事かもしれませんが教えてくださ... たけし 05/1/7(金) 21:37 お礼[未読]

【20988】簡単な事かもしれませんが教えてください...
質問  たけし  - 05/1/5(水) 22:54 -

引用なし
パスワード
   こんばんは。

全てのセルを対象に、ある文字だけの色を変更したいと思うのですが、こんな事は可能なのでしょうか。

(A1に"本日の温度は高い、"B1に"本日の温度は低い"、C2に"本日の温度は高い"・・・・AA11120に"本日の温度は低い")と入力していたとして、それぞれのセルの温度という文字だけを赤色に変更したいのです。

みなさま、よろしくご教授くださいませ。

【20991】Re:簡単な事かもしれませんが教えてくだ...
回答  IROC  - 05/1/6(木) 7:18 -

引用なし
パスワード
    全てのセルをループすると時間が掛かるので、
対象セルを選択してから実行して下さい。


Sub sample()
Dim r As Range
Dim i As Long
  
  For Each r In Selection
    i = InStr(r.Value, "温度")
    
    If i > 0 Then
       r.Characters(Start:=i, Length:=2).Font.ColorIndex = 3
    End If
  Next r

End Sub


【21014】Re:簡単な事かもしれませんが教えてくだ...
質問  たけし  - 05/1/6(木) 19:09 -

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

早々のご解答ありがとうございます。
早速試してみましたが、感動しました。

追加の質問で申し訳ありませんが、このマクロでは1つのセルに2つ以上”温度”という文字があると最初の”温度”しか変換できませんよね。
1つのセルに2つ以上の”温度”という文字があった場合、全ての”温度”の文字を赤くする事は出来ますでしょうか?

大変厚かましく申し訳ありませんが、ご解答の程よろしくお願い致します。

> 全てのセルをループすると時間が掛かるので、
>対象セルを選択してから実行して下さい。
>
>
>Sub sample()
>Dim r As Range
>Dim i As Long
>  
>  For Each r In Selection
>    i = InStr(r.Value, "温度")
>    
>    If i > 0 Then
>       r.Characters(Start:=i, Length:=2).Font.ColorIndex = 3
>    End If
>  Next r
>
>End Sub
>

【21017】Re:簡単な事かもしれませんが教えてくだ...
回答  IROC  - 05/1/7(金) 10:14 -

引用なし
パスワード
   InStr関数でセル内のどの位置に「温度」の文字があるかを取得していましたが、
複数ある場合を考慮するとなると、For〜Nextのループ文とMid関数を使い、
地道に1文字ずつ文字を判定して調べるといった、面倒な方法しか思いつきません。

【21019】Re:簡単な事かもしれませんが教えてくだ...
回答  トシ坊  - 05/1/7(金) 12:52 -

引用なし
パスワード
   IROC さんのサンプルをおかりせて作成してみました。
Sub sample2()
Dim r As Range
Dim i As Long
Dim ii As Long
Dim st As String
  For Each r In Selection
    i = InStr(r.Value, "温度")
    If i > 0 Then
      st = r.Value
      ii = i
      Do While ii > 0
        ii = InStr(st, "温度")
        If ii > 0 Then
          r.Characters(Start:=ii, Length:=2).Font.ColorIndex = 3
            st = Application.WorksheetFunction.Replace _
            (Arg1:=st, Arg2:=ii, Arg3:=2, Arg4:="--")
          End If
      Loop
    End If
  Next r

End Sub

【21020】Re:簡単な事かもしれませんが教えてくだ...
回答  Kein  - 05/1/7(金) 14:16 -

引用なし
パスワード
   選択範囲を処理するとして

Sub MyFont_Col()
  Dim i As Long
  Dim C As Range
 
  For Each C In Selection
   i = InStr(1, C.Value, "温度")
   Do Until i = 0
     C.Characters(i, 2).Font.ColorIndex = 3
     i = InStr(i + 2, C.Value, "温度")
   Loop
  Next
End Sub

【21027】Re:簡単な事かもしれませんが教えてくだ...
お礼  たけし  - 05/1/7(金) 21:37 -

引用なし
パスワード
   ▼IROC さん、トシ坊さん、Keinさん:

ありがとうございます。出来ました。本当に感動しました。
膨大にある資料整理があっという間に出来てしまいました。

本当にみなさま、お忙しい時間を割いてお知恵を貸して頂きありがとうございました。

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