プロが教える店舗&オフィスのセキュリティ対策術

独学で勉強しながら作成を行っていましたが行き詰ってしまったので質問します

・情報を表示させるフォーム

・検索フォーム

この2つを作成しておりまして。

検索フォームで検索を行い、結果をダブルクリックをするとフォームに反映されるものなのですが

検索の結果表示(リストボックス)には

【行番号】と【氏名】が現状表示されています。

ですが本来の希望は行番号ではなくユーザーナンバーをリストボックスに表示をさせたいのです。


そこでVBAを編集しようと思ったのですが

下記コードの赤字の部分をユーザーナンバー記載されているWorksheets(データ").Cells(wRow, 1)

に2か所変更すると確かにリストボックス上はユーザーナンバーが表示されるのですが

ダブルクリックをしても情報が表示されません。

---------------------------------------------------------------------

Private Sub SetListBox() '← リストに表示する処理追加

Dim wRow As Long

Dim wLstRow As Long



Me.検索候補.Clear



wLstRow = 0



For wRow = 2 To Worksheets("データ").Range("A1").CurrentRegion.Rows.Count

If Me.サーチ = "" Then

Me.検索候補.AddItem

Me.検索候補.List(wLstRow, 0) = wRow

Me.検索候補.List(wLstRow, 1) = Worksheets("データ").Cells(wRow, 2)

wLstRow = wLstRow + 1

Else

If InStr(1, Worksheets("データ").Cells(wRow, 2), Me.サーチ, vbTextCompare) > 0 Then

Me.検索候補.AddItem

Me.検索候補.List(wLstRow, 0) = wRow

Me.検索候補.List(wLstRow, 0) = Worksheets(データ").Cells(wRow, 2)

wLstRow = wLstRow + 1

End If

End If

Next

End Sub

---------------------------------------------------------------------

簡単ですがこちらで解決策がお分かりの方いらっしゃいましたらご教示いただけませんでしょうか

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

  • つらい・・・

    リストボックスのダブルクリックに関しまして補足いたします
    現状
    Private Sub 検索候補_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    rtnNo = Me.検索候補.Text
    Unload Me
    こちらが入力されています


    検索フォームというのが

    テキストボックスに名前を入力するとしたのリストボックスに
    行番号と名前が表示されます
    上記の状態の場合、リスト内をダブルクリックすると
    別のユーザーフォームに名前以外の情報が任意のテキストボックスに表示されます

    これを
    ユーザーナンバーと名前をリストボックスに表示するように質問本文の赤字のみを編集した場合
    リストボックスにはユーザーナンバーと名前が表示されるがそれをダブルクリックしても
    フォームには情報が反映されない状態になっています。

      補足日時:2020/09/21 11:28
  • つらい・・・

    リストボックスのダブルクリックに関しまして補足いたします
    現状
    Private Sub 検索候補_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    rtnNo = Me.検索候補.Text
    Unload Me
    こちらが入力されています


    検索フォームというのが

    テキストボックスに名前を入力するとしたのリストボックスに
    行番号と名前が表示されます
    上記の状態の場合、リスト内をダブルクリックすると
    別のユーザーフォームに名前以外の情報が任意のテキストボックスに表示されます

    これを
    ユーザーナンバーと名前をリストボックスに表示するように質問本文の赤字のみを編集した場合
    リストボックスにはユーザーナンバーと名前が表示されるがそれをダブルクリックしても
    フォームには情報が反映されない状態になっています。

    No.3の回答に寄せられた補足コメントです。 補足日時:2020/09/21 11:29

A 回答 (4件)

Private Sub 検索候補_DblClick(ByVal Cancel As MSForms.ReturnBoolean)


rtnNo = Me.検索候補.Text
Unload Me
  ・
  ・
  ・

この下に、「データ」シートのrtnNo行目の情報を「情報を表示させるフォーム」へ転記するようなコードが書かれていませんか?

コード修正前は、rtnNoに行番号が格納されていたため、その行の情報を単純に転記すれば良かったはずですが、改修後はユーザナンバーが格納されるようになってしまうため、「データ」シートの何行目が、そのユーザナンバーに該当するかを検索するコードが必要になるはずです。

「独学で勉強中」とのこと。もし初心者であれば、良い勉強になると思いますので、頑張ってみてください。

もし、ハードルが高いようであれば、行番号はそのまま残して、ユーザナンバーを追加した方が、簡単に対応できるかもしれません。
    • good
    • 0

こんにちは、


今まで内容が転記できていたと解釈すれば良いのか
解りませんが、示されているコードには、ダブルクリックイベントがありません。
どのオブジェクトをダブルクリックするのか不明ですが、

例えば、リストボックス 検索候補のダブルクリックイベントプロシージャに
転記コードを書けばよいと思います。
Private Sub 検索候補_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Cancel=True
情報を表示させるフォームオブジェクト=検索候補.List(検索候補.ListIndex, 0)
情報を表示させるフォームオブジェクト1=検索候補.List(検索候補.ListIndex, 1)
End Sub
こんな感じかな?
この回答への補足あり
    • good
    • 0

InStr の方の



>Me.検索候補.List(wLstRow, 0) = Worksheets(データ").Cells(wRow, 2)

書き込む列がダブっているのは記載ミスとしても、問題となっている

>ダブルクリックをしても情報が表示されません。

こちらがどうなのかなとOfficeを壊している初級者は思いました。
    • good
    • 0

プログラムの勉強のやり方ですけど、独学でいけるならいいのですが、そうじゃあないことも多いです。


自分の頭で考えてもダメなときは、大型書店に行って、参考になりそうなサンプルが掲載された専門書の購入をするか、ネットで似たようなプログラムは無いか?を探すほうがいいです。
「無い袖は振れない」ともいいますからね。
優秀な他人のプログラマさんが作成したものを探して真似しましょう!
    • good
    • 0

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