• 締切済み

マクロ 検索について

こんにちは。マクロでの質問ですが、 【大学名リスト】というシートで作成したリストから検索してきたものを【検索ボタン】というシートのセルにコピペするマクロをボタンに登録しました。何度押しても検索してくれてしまうのですが、このボタンに登録したのは1回だけ実行して、もう一つのマクロで次を検索してくれるように作りたいのですが… Sub Macro1() ' ' Macro1 Macro ' ' Sheets("A.【大学名リスト】").Select Cells.Find(What:=Sheets("B.【検索ボタン】").Range("C8"), After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , SearchFormat:=False).Activate Selection.Copy Sheets("B.【検索ボタン】").Select Range("E8").Select ActiveSheet.Paste End Sub 数値の検索だと1回だけで止まってくれるのですが、数式にすると何回も可能になってしまうのはなぜなのでしょうか。 あと、実行すると【大学名リスト】のシートで作成したリストから、【検索ボタン】のシートのあるセルにキーワードを入力すると、隣のセルに5つの候補を表示させるマクロも教えていただきたいです。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 コード自体は、記録マクロのようですが、その説明では、ほとんど分かりません。 >数式にすると何回も可能 この意味も分からないです。繰り返しているということでしょうか? 通常、xlFormulas にしたら、数式の中身まで探してしまうので、そのような設定はしません。xlValues (値)です。 >隣のセルに5つの候補を表示させる それも良く分かりません。候補は、何を元にしているのかさえ分からないのだからです。 説明が不足しているようです。 一応、こちらが、想像の範囲で、コードを書いてみました。参考にしてみてください。 Sub Macro2()   Dim mySearch As String   Dim FirstAdd As String   Dim strFind As String   Dim c As Range   Dim buf As Variant   Dim i As Integer, j As Integer      mySearch = Worksheets("B.【検索ボタン】").Range("C8").Value   If mySearch = "" Then     MsgBox "検索値が空です。", 48     Exit Sub   End If   With Worksheets("A.【大学名リスト】")     Set c = .Cells.Find(What:=mySearch, _     After:=ActiveCell, _     LookIn:=xlValues, _     LookAt:=xlPart, _     SearchOrder:=xlByRows, _     SearchDirection:=xlNext, _     MatchCase:=False, _     SearchFormat:=False)          If Not c Is Nothing Then       FirstAdd = c.Address       strFind = c.Value       Do         i = i + 1         Set c = .Cells.FindNext(c)         strFind = strFind & "," & c.Value         If c.Address = FirstAdd Then Exit Do       Loop Until c Is Nothing     End If     buf = Split(strFind, ",")     For j = 1 To i       Worksheets("B.【検索ボタン】").Range("E8").Cells(1, j).Value = buf(j - 1)       '5回になったら終了       If j > 4 Then Exit Sub     Next j   End With End Sub

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

条件に当てはまるセルを検索する(Find/FindNext/FindPreviousメソッド) http://www.moug.net/tech/exvba/0050116.htm  LookIn  検索の対象を指定 数式(xlFormulas)、値(xlValues)、          コメント(xlComments) [省略可能] ここが該当するのかな?