プロが教えるわが家の防犯対策術!

VBA超初心者です。
UserForm2のTextBox1に顧客IDを入力し、ListBox1に検索結果を表示。ListBox1の結果をダブルクリックしてUserForm1の入力画面で修正や追記を行いたいです。
UserForm1の項目は43項目あり、Excel sheet1 に反映します。ID検索でUserForm2のListBox1に表示させた項目は、sheet1からID、名前、性別、日付、担当者のみ表示しました。
修正が必要なListBox1の値をDoubleClickし、UserForm1のTextBoxに値を転記しデータを修正し、再登録ボタンを押して再度Sheet1の同じ箇所に収めたいです。

UserForm2で
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
UserForm1.Text
End Sub
・・・でわからなくなってしましました。
どうかよろしくお願いします。

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

  • 質問がわかりにくくて申し訳ありません。
    ワークシートのB列のID番号を検索してUserForm2のリストボックスに表示させました。
    リストボックスに表示された検索結果をダブルクリックしたらをUserForm1の入力フォームでデータの追加や修正をしたいです。UserForm1のTextBox1を顧客IDにしています。
    重ねてご教示お願いします。

      補足日時:2023/07/14 18:48

A 回答 (2件)

こんばんは



>VBA超初心者です。
とおっしゃる割りには、難しいことをなさっているようです。

特に、ユーザフォームはシートのセルのようにレイアウトも決まっていませんし、コントロールの名称も決まっていません。
さらにはどのような設定をしているのかも様々なので、正確な情報が伝わりにくいため、単純化したご質問でないとなかなか適切な回答は得られにくいと思います。

また、二つのFormを使い分けているようですが、表示の方法(モーダル、モードレス)や値をどこに保持しておくかなども関わってきそうですね。

全体の構成や位置関係が不明なので、とても処理のコードは書けませんけれど、とりあえずダブルクリックイベントの処理で、選択された項目の取得の方法だけを以下に示しておきます。

ListBoxのダブルクリックイベントでは、どの項目がクリックされたかの情報は得られません。
得られるのは、それぞれの項目が選択状態か否かの情報だけです。
(どうしても、どの項目かを取得したければ、Win APIなどを用いて、クリックの位置とフォームの位置から計算で求めるようなことを行えば、不可能ではありませんが、相当に面倒なものになると思われます)
また、Listboxがマルチセレクト可になっていると、複数の項目を取得することになってしまいますので、ご質問のケースでは1項目のみが選択可となっていると仮定しています。

(リスト内には、すでに項目が表示されている状態であると仮定しています)
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim i
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then Exit For
Next i
If i < ListBox1.ListCount Then MsgBox ListBox1.List(i)

End Sub

のような感じで、選択された項目を取得することが可能です。
(上記の例では、リストが未選択の場合には何もしません)
    • good
    • 3
この回答へのお礼

ありがとうございます。参考にさせていただきます。

お礼日時:2023/07/18 19:49

厳しそうに感じる初級者です。



まず質問者さんは実際のデータ仕様やそれぞれのフォームにおけるコントロール配置については目を通しているでしょう。
しかしこの質問ではそれらの仕様及び関連(紐付け)情報が見えてこないと感じます。

画像(写真撮影ではなく画面のプリントスクリーンを適度なサイズに変更)があると視覚的に便利かと思いますが、ここのサイトでは画像拡大が難しい。
まだ知恵袋の方が見やすいとは思います。

ベテラン回答者さんであれば外部サイトの紹介とかもあるようですが、果たして安全なのか?についてはたかだか40年程度サボり気味でやってきた初級者には判別できませんので、それは抜きにしておきました。
検索すると紹介されているかもしれませんけど。
    • good
    • 0

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

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


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