- 締切済み
Excelでセルの検索結果をテキストボックスに表示
先日、この内容の回答が来たのですが、いろいろテストしていたら、検索ボックスに入力して1回目は検索できるのですが、続けて次の検索をしようテキストボックスに入力してボタンを押しても以前の内容で検索されてしまいます。 どこを修正すれば良いのか教えてください。 UserForm1に、検索条件を入れるTextBox4、 該当した行のB,C,D列表示用の、TextBox1、TextBox2,TextBox3の3つ(計4つ)を設けます。 コマンドボタンを1つ(Captionは「検索・次検索」)設けます。検索・次検索ボタンです。 標準モジュールに Public ac As Range Public startaddr As String 変数の次ステップ(イベント)への受け渡し用です。 UserForm1のコマンドボタンのクリック・イベント・プロに Private Sub CommandButton1_Click() Dim r As Range If ac Is Nothing Then d = Range("A65536").End(xlUp).Row With ActiveSheet.Range(Cells(1, "A"), Cells(d, "A")) Set r = .Find(what:=TextBox4) rr = r.Row TextBox1.Text = Cells(rr, "B") TextBox2.Text = Cells(rr, "C") TextBox3.Text = Cells(rr, "D") Set ac = r r.Activate MsgBox ac.Address startaddr = ac.Address Exit Sub End With Else MsgBox ac.Address d = Range("A65536").End(xlUp).Row MsgBox d With ActiveSheet.Range(Cells(1, "A"), Cells(d, "A")) Set r = .FindNext(ac) rr = r.Row TextBox1.Text = Cells(rr, "B") TextBox2.Text = Cells(rr, "C") TextBox3.Text = Cells(rr, "D") Set ac = r r.Activate If r.Address = startaddr Then TextBox1.Text = "終わり" Exit Sub End With End If End Sub
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- papayuka
- ベストアンサー率45% (1388/3066)
これを入れるとか、、、 Private Sub TextBox4_AfterUpdate() Set ac = Nothing StartAddr = "" End Sub あと気になるところは、見つからない事を想定していない所とFind の LookAt (完全一致 or 部分一致)を指定していない所です。 私なりに修正してみました。 TextBox4_AfterUpdate はこちらでも必要です。 Private Sub CommandButton1_Click() Dim r If ac Is Nothing Then Set r = ActiveSheet.Columns(1).Find(what:=TextBox4.Text, LookAt:=xlWhole) Else Set r = ActiveSheet.Columns(1).FindNext(ac) End If If Not r Is Nothing Then For i = 1 To 3 Me.Controls("TextBox" & i).Text = r.Offset(0, i) Next i r.Activate: Set ac = r If r.Address = StartAddr Then MsgBox "最初のセルです", vbOKOnly + vbInformation, "検索終了" End If If StartAddr = "" Then StartAddr = r.Address End If End Sub
補足
有難うございました。 完璧です。 実はもうひとつ書くのを忘れてしまったのですが、セルの色もテキストボックスに表示できないかなと思っていますが、如何でしょうか? 行によって色が付いているので、その色も表示できないでしょうか? こんなことって出来るのでしょうか? 教えてください。