- 締切済み
マクロ 検索について
こんにちは。マクロでの質問ですが、 【大学名リスト】というシートで作成したリストから検索してきたものを【検索ボタン】というシートのセルにコピペするマクロをボタンに登録しました。何度押しても検索してくれてしまうのですが、このボタンに登録したのは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つの候補を表示させるマクロも教えていただきたいです。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 コード自体は、記録マクロのようですが、その説明では、ほとんど分かりません。 >数式にすると何回も可能 この意味も分からないです。繰り返しているということでしょうか? 通常、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)
条件に当てはまるセルを検索する(Find/FindNext/FindPreviousメソッド) http://www.moug.net/tech/exvba/0050116.htm LookIn 検索の対象を指定 数式(xlFormulas)、値(xlValues)、 コメント(xlComments) [省略可能] ここが該当するのかな?