[[20220107132908]] 『ユーザーフォーム上のボタンを押したら検索して移』(くにもん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ユーザーフォーム上のボタンを押したら検索して移動』(くにもん)

コマンドボタンを押したら、別シートの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.