アプリ版:「スタンプのみでお礼する」機能のリリースについて

はじめて質問させていただきます。
エクセルVBA初心者です。
ワークシートのA列から会員番号を検索してユーザーフォームのリストボックスに表示させました。
※会員番号は重複しているものがあります。
リストボックスに表示された検索結果の1つをクリックしたら、ワークシート上のA列の該当するセルをアクティブセルにしたいです。
どなたかご教示お願いします。

質問者からの補足コメント

  • こんばんはtom04様、早々のご回答本当にありがとうございます。
    ご教示頂いた方法で試させていただきました。
    こんなこと(複数ある場合は複数セル)も選択できるんだ~と感動しております。
    今回は、検索されたリストボックスの1つだけを選択して、その選択した1つの項目をセルに反映(アクティブ)にしたいです。(リストボックスに表示された検索結果が複数の場合、リストボックスでクリックするたびに該当するセルがアクティブに変わるようにしたいのですが。こんなことできるのでしょうか?)もしよろしければ、お手すきの際教えて頂けたら助かります。宜しくお願いします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2019/04/25 20:09
  • No.1様、ご回答ありがとうございます。
    いろいろな知識を頂けて本当に感謝しています。
    はじめての質問で説明がうまくできず本当に申し訳なく思っています。
    ワークシート上のA列の会員番号から右(B列C列・・・)は名前や予約日などが入力されています。
    会員番号を入力して検索後(コマンドボタンをクリックすると)⇒リストボックスに検索されたデータが表示されます。(このとき、同じ会員番号の情報もあり、複数リストボックスに表示されることがあります。)ここで(リストボックス内の該当データをクリックして1つ選択するのですが・・・)⇒その選択したデータのセル(A列にあるセル)をアクティブにできないのです。
    もし、アクティブにできれば、ここから(ユーザーフォーム上から)編集ができると思い、質問させていただきました。できればで結構です。教えて頂けたら助かります。

    No.2の回答に寄せられた補足コメントです。 補足日時:2019/04/25 22:12

A 回答 (3件)

こんばんは!



>A列の該当するセルをアクティブセルに・・・
とはA列該当データ(複数ある場合は複数セル)を選択というコトですよね。

リストボックス → ListBox1 とします。

Private Sub ListBox1_Click()
 Dim FoundCell As Range, FirstCell As Range, myRng As Range
  Set FoundCell = Range("A:A").Find(what:=ListBox1, LookIn:=xlValues, lookat:=xlWhole)
  Set FirstCell = FoundCell
  Set myRng = FoundCell
   Do
    Set FoundCell = Range("A:A").FindNext(after:=FoundCell)
    If FoundCell.Address = FirstCell.Address Then Exit Do
    Set myRng = Union(myRng, FoundCell)
   Loop
  myRng.Select
End Sub

こんな感じではどうでしょうか?
この回答への補足あり
    • good
    • 0

検索結果をリストボックスに表示させるところまでは出来ているということで間違いないですか?


であれば、そのコードを補足にアップして頂ければ、適切なアドバイスが受けられると思いますよ。
    • good
    • 0

No.1です。



A列の該当データを順に選択したい!というコトですね。
ただし、リストボックス内の選択で同じデータを選択しても何も変化がない!というコトになりますので、
コマンドボタンを追加し、コマンドボタンをクリックするたびに順に選択する方法ではどうでしょうか?
一例です。

尚、リストボックスのコードを↓のコードに変更した上で、コマンドボタンのコードを追加してみてください。

Private Sub ListBox1_Click()
 Dim FoundCell As Range
  Set FoundCell = Range("A:A").Find(what:=ListBox1, LookIn:=xlValues, lookat:=xlWhole)
  FoundCell.Select
End Sub

次にコマンドボタンのコードです。

Private Sub CommandButton1_Click()
 Dim FoundCell As Range
  If Selection <> ListBox1 Then
   Set FoundCell = Range("A:A").Find(what:=ListBox1, LookIn:=xlValues, lookat:=xlWhole)
   FoundCell.Select
  Else
   Set FoundCell = Range("A:A").FindNext(after:=Selection)
   FoundCell.Select
  End If
End Sub

こんな感じではどうでしょうか?

※ FIND関数を使用するにあたって注意点があります。
重複データがあり、最初に出現するのがA1セルの場合は2番目から選択されます。
(重複データがない場合はA1セルが選択されます)m(_ _)m
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A