こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルVBAで検索(FIND使用)

困っています。お願いします。
例、このようなシートがあるとする
100
200
300
1000
10000
エクセルVBAで
fc = Range("a1").Interior.Find("100")
「100」で検索すると100だけではなく、100を含むすべての文字列、つまり1000、10000も全部ひっかかります。

ちょっと困るので、完全一致のものだけを抽出する方法ありませんか。
ちなみに今日はじめてエクセルVBAを触りました。初心者です

投稿日時 - 2006-08-23 22:00:55

QNo.2358126

すぐに回答ほしいです

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

こんばんは。

>fc = Range("a1").Interior.Find("100")

本当にExcelのVBAですか? Excel VBAでは、そのような使い方はなかったと思います。

私が、Find メソッドを使う時は、以下のようなスタイルにします。省略はなるべく避けます。なお、100だけの検索という場合は、

LookAt:=xlWhole

を使います。Excelがはじめの方には、Findメソッドは、少し、荷が重いような気がします。

入門レベルでは、以下のようなループを使ったらよいと思います。

Sub SampleTest()
For Each c In Range("A1:D100")
 If c.Value = 100 Then
  c.Interior.ColorIndex = 3 '色は赤
 End If
Next c
End Sub


Find メソッドを使ったサンプル
Select の部分で加工する
'-------------------------------------------------------------
Sub TestFind()
 Dim c As Range
 Dim FirstAdd As String
 Dim rng As Range
 '検索語の代入
 Const KENSAKU As Variant = 100
 
 Set rng = ActiveSheet.UsedRange
 rng.Cells(1, 1).Select
 Set c = ActiveSheet.UsedRange.Find( _
    What:=KENSAKU, _
    LookIn:=xlValues, _
    LookAt:=xlWhole, _
    SearchOrder:=xlByRows, _
    SearchDirection:=xlNext, _
    MatchByte:=True)
 
 If Not c Is Nothing Then
  FirstAdd = c.Address
  c.Select
  If MsgBox(c.Address & vbCrLf & _
     "次も検索しますか?", vbOKCancel) = vbCancel Then
   Exit Sub
  End If
  
  '次の検索
  Do
   Set c = rng.FindNext(c)
   If c Is Nothing Or c.Address = FirstAdd Then 'アドレスの確保
    Exit Sub
   End If
   c.Select 'セルの選択
   If MsgBox(c.Address & vbCrLf & _
    "次も検索しますか?", vbOKCancel) = vbCancel Then
    Exit Sub
   End If
  Loop
 End If
 
 Set c = Nothing
 Set rng = Nothing
 
End Sub

投稿日時 - 2006-08-23 22:28:23

ANo.2

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

NCU

・マクロ記録する。
・ヘルプ程度は読む。
Find は引数の説明を読まずして使えません。(もしくは使えているつもりでも実は「たまたま」であって、ある日突然誤動作します。)

以上

投稿日時 - 2006-08-24 00:05:08

ANo.3

Interior???

Set fc = Range("a1").CurrentRegion.Find("100", , LookAt:=xlWhole)

ではないでしょうか?

投稿日時 - 2006-08-23 22:44:52

ANo.1

findの設定項目LookAtでxlWholeを指定です。

参考
http://www.moug.net/tech/exvba/0050116.htm

投稿日時 - 2006-08-23 22:27:45

あなたにオススメの質問