- ベストアンサー
VBAの検索について
Excelシートに表の一覧があり、項目(5行目)のところでウィンドウの固定をしています。 検索したいNo.をセル(G2)に入力し、コマンドボタンをクリックします。 セル(G2)に入力されたNo.とA列に入力されているNo.が一致する行を検索し、一致した行(複数はない)を項目の下までスクロールさせた状態で表示したいと思っています。 検索までは下記プログラムでできているのですが、一致した行を項目の下までスクロールさせた状態で表示するのはどうしたらよいのでしょうか。 ************************************************************* Private Sub CommandButton1_Click() Dim myClm As Integer, myFind As Integer, myRow As Integer myClm = 1 'A列 If Sheet1.Range("G2") = "" Then Exit Sub myFind = Sheet1.Range("G2") For myRow = Cells(Rows.Count, myClm).End(xlUp).Row To 1 Step -1 With Cells(myRow, myClm) If .Value Like myFind Then .Activate Exit For End If End With Next End Sub ************************************************************
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 FindメソッドとGotoメソッドについて調べてみると良いかもしれません。 Private Sub CommandButton1_Click() Dim myClm As Long Dim myFind As Variant Dim r As Range myClm = 1 'A列 With Sheet1 myFind = .Range("G2").Value If myFind = "" Then Exit Sub Set r = .Columns(myClm).Find(What:=myFind _ , LookIn:=xlValues _ , LookAt:=xlWhole) If Not r Is Nothing Then Application.Goto Reference:=r, Scroll:=True Set r = Nothing End If End With End Sub
その他の回答 (1)
然るに。 単に、Selectメソッドでいいような気がするのですが…。 例) Option Explicit Option Base 0 Private Sub CommandButton1_Click() Dim lngCol As Long Dim lngRow As Long Dim strFind As string On Error GoTo ErrH lngCol = 1 'A列 '例外 If Sheets("Sheet1").Range("G2").Value = "" Then MsgBox "G2に値が入っていません。" Exit Sub End If strFind = Sheet1.Range("G2") For lngRow = Cells(Rows.Count, lngCol).End(xlUp).Row To 1 Step -1 With Cells(lngRow, lngCol) If .Value Like strFind Then .Activate '選択する Cells(lngRow, lngCol).Select Exit For End If End With Next lngRow Exit Sub ErrH: If Err.Number <> 0 Then MsgBox "例外発生:(" & Err.Number & ")" & vbCrLf _ & Err.Description End If End Sub なお。 1.変数をLong型に変えたのは、メモリは無駄だが32bitマシンでは 処理が速い+Excel2007ではCell数がintを超える為。 2.Option Explicit は宣言なしの変数利用不可 Option Base 0 は配列0スタート定義で双方ポカ除け。 …たぶん動くと思います。が。 如何でしょうか?
お礼
ご回答どうもありがとうございます。 とても詳しく教えていただき、勉強になりました。 本当にありがとうございました。
お礼
ご回答どうもありがとうございます。 無事解決することができました。 本当にありがとうございました。