Excel VBA質問箱 IV

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

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


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

【62111】該当文字列 akaishi 09/6/23(火) 15:03 質問[未読]
【62116】Re:該当文字列 つん 09/6/23(火) 16:15 発言[未読]
【62117】Re:該当文字列 つん 09/6/23(火) 16:38 発言[未読]
【62197】Re:該当文字列 akaishi 09/6/29(月) 21:25 質問[未読]
【62199】Re:該当文字列 つん 09/6/30(火) 9:33 発言[未読]

【62111】該当文字列
質問  akaishi  - 09/6/23(火) 15:03 -

引用なし
パスワード
    文字列を検索し、該当文字を赤字で表示させたくて、試しにコードを書いたが、
うまくいかなくて、ご伝授ください。
1.該当文字列が見付かったら、該当文字を赤字で表示したい。
2.このコードを実行すると、すべての文字列が1.のようにしたい。
Sub test_20090623()
Dim SearchWord As String, FR As Range
SearchWord = "テキスト"  →1.該当文字列が見付かったら、該当文字を赤字で表               示したい。
              2.このコードを実行すると、二つ目の文字列も1.の               ようにしたい。
With Worksheets("Sheet1").Range("A1:f15")
Set FR = .Find(What:=SearchWord, LookIn:=xlValues, LookAt:=xlWhole)
If Not FR Is Nothing Then
MsgBox FR.Address
End If
End With
Set FR = Nothing
End Sub

【62116】Re:該当文字列
発言  つん  - 09/6/23(火) 16:15 -

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

セルの入力されてる文字列の中に、当該文字があって、その部分だけ赤字・・
じゃなくて、セルにはその当該文字しか入力されてないですか?
(LookAt:=xlWhole)ですもんね?
だったら

>Sub test_20090623()
>Dim SearchWord As String, FR As Range
>SearchWord = "テキスト"  →1.該当文字列が見付かったら、該当文字を赤字で表               示したい。
>              2.このコードを実行すると、二つ目の文字列も1.の               ようにしたい。
>With Worksheets("Sheet1").Range("A1:f15")
>Set FR = .Find(What:=SearchWord, LookIn:=xlValues, LookAt:=xlWhole)
>If Not FR Is Nothing Then
>MsgBox FR.Address
FR.Font.ColorIndex = 3
 ↑ここにこれ入れるだけですよね?
>End If
>End With
>Set FR = Nothing

続いて検索・・・は、Findのヘルプに、「FindNext」も使った例があるので、それを参考にされたら出来ると思います。
>End Sub

【62117】Re:該当文字列
発言  つん  - 09/6/23(火) 16:38 -

引用なし
パスワード
   >セルの入力されてる文字列の中に、当該文字があって、その部分だけ赤字・・
>じゃなくて、セルにはその当該文字しか入力されてないですか?

う・・・「当該文字」って、「該当文字」やんね。
削除して、再投稿も面倒なので、ここでお詫びorz

「末端」とか「端末」とかよく間違えるやんねw
(私だけか・・・orz)

これだけだと、ほんまアホなので、ついでに・・・・
セルの文字列の中に「該当文字」が途中に入ってる場合


'==============================================
Sub test()

  Dim SearchWord As String, FR As Range
  Dim strAddress As String

  SearchWord = "テキスト" 

  With Worksheets("Sheet2").Range("A1:f15")
    Set FR = .Find(What:=SearchWord, LookIn:=xlValues, LookAt:=xlPart)
    If Not FR Is Nothing Then
      strAddress = FR.Address
      Do
        Call ColorChange(FR, SearchWord)
        Set FR = .FindNext(FR)
      Loop While Not FR Is Nothing And FR.Address <> strAddress
    End If
  End With
  Set FR = Nothing
  
  
End Sub

'==============================================

Sub ColorChange(arg_rngTarget As Range, arg_strText As String)

  Dim lngS As Long
    
  lngS = InStr(arg_rngTarget.Value, arg_strText)
  
  arg_rngTarget.Characters(Start:=lngS, Length:=Len(arg_strText)).Font _
    .ColorIndex = 3

End Sub

【62197】Re:該当文字列
質問  akaishi  - 09/6/29(月) 21:25 -

引用なし
パスワード
   つんさん
 
 こんばんは、二つのモジュールを一つにまとめた場合は、どのようにすれば
いいでしょうか?
 ご伝授ください。

【62199】Re:該当文字列
発言  つん  - 09/6/30(火) 9:33 -

引用なし
パスワード
   > こんばんは、二つのモジュールを一つにまとめた場合は、どのようにすれば
>いいでしょうか?
> ご伝授ください。

Sub test の

Call ColorChange(FR, SearchWord)

の部分に

直接、「ColorChange」の処理を入れたらいいだけです。

ColorChange(arg_rngTarget As Range, arg_strText As String)
で使ってる引数は、

「arg_rngTarget」=「FR」
「arg_strText」 =「SearchWord」

にあたりますので、直接その変数をあてればOKかと。

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