[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ユーザーフォーム上のボタンを押したら検索して移動』(くにもん)
コマンドボタンを押したら、別シートのA2815に移動しますが、これを改良するのに自分には限界です。
Private Sub CommandButton1_Click()
Application.Goto Worksheets("シート3").Range("A2815"), True End Sub
テキストボックス1に、1984と入力されていたら、シート3のA1000からA1500の間を検索して、同じ数値があるところに移動するようにしたいです。
テキストボックス1に入力されていなかったり、シート3に同じデータがなければ何もなしでOKです。
(1桁から10桁くらいまでバラバラにあります、また、同じ番号がある場合は、一番上の場所に移動でお願いします。)
よろしくご教授ください。
< 使用 Excel:Excel2019、使用 OS:Windows10 >
https://docs.microsoft.com/ja-jp/office/vba/api/excel.application.goto
そうすれば
Application.Goto Worksheets("シート3").Range("A2815"), True ~~~~~~~↑~~~~~~~ ~~~~~~~~~~~~~~~~↑~~~~~~~~~~~~~~~~~~ ~↑~ 移動しなさい 「シート3」シートのA2815セル スクロールする
という命令だということが理解出来るでしょう。
ということは、
(1) テキストボックス1の値を(変数に)取得する
(2) テキストボックス1の値が""だったら、即処理終了(何もしない)
(3) シート3のA1000からA1500の間を検索する (ワークシート関数の【Match】をつかう、【Findメソッド】を使う、【ループ処理】で1000〜1500行目を見つかるまで総当たりする等)
(4) (3)で見つからなければ、即処理終了(何もしない)
(5) (3)で見つけたセルにGotoメソッドで移動する
という流れで処理すればよいことになりますよね。
さて、今、貴方が詰まっているのはどの部分ですか?
ヒントをいくつか書いたつもりなので、解らない命令があったらネット検索してみてはどうでしょうか?
(もこな2) 2022/01/07(金) 14:04
ちょっと書いてみましたので参考にしてみてください。
Private Sub CommandButton1_Click() Dim Tmp, Fnd 'テキストボックスの値を変数に格納 Tmp = Me.TextBox1.Text '何も入力されていない時は即終了 If Len(Tmp) = 0 Then Exit Sub '検索値を探す(完全一致) Set Fnd = Sheets("シート3").Range("A1000:A1500").Find(Tmp, , xlValues, xlWhole) '検索結果の処理 If Not Fnd Is Nothing Then '見つかったとき Application.Goto Fnd, True Else '見つからなかったとき MsgBox "検索値: " & Tmp & " が見つかりません" End If End Sub (通りすがり) 2022/01/07(金) 15:35
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.