• 締切済み

ユーザーフォームでのListBoxからの・・・

Excelファイルを起動しシート上の様式に入力するユーザーフォームを初めて作成しております。 今回の質問ですが、フォーム上でのリストから合致する内容を別テキストボックスへ表示する様にしたいのですが御教授下さい。 ※VBA作成シート上ではVLOOKUP関数を使い使用しておりました。 例) ListBox1でリストで氏名を選択 → TextBox1へ氏名に合致するTEL番号表示  → 様式のセルへ転記 ※セルへの転記は心得ております。 Office2010 Win7での環境です。 初めてVBAをいじり、作動した時の喜びをニヤけながら作成しております。 どうぞ、よろしくお願いいたします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

下記のように質問を書くとわかりやすく正確になると思う。 表現を勉強して見てください。日頃文章力を磨くことが大切 やりたいことは下記か?(推測で1部補充) 順を追って正確に伝わるよう表現すること)。 1 ユーザーフォームを1つシートに貼り付け(Sheet1) 2 上記ユーザーフォーム上にリストボックスを1つ貼り付け 3 リストボックスのアイテム(項目)には氏名を出す 多分シートのセル範囲にあるデータを表示するのだろう 。   ここがEXCEVBAらしいところで、VB(NET系)ではそうは簡単にはできないだろう) 4 リストボックスの1つのアイテム(氏名)をマウスでクリックして選択すると その氏名が決定する(取得される) 5 その氏名をもとに、VLOOKUP関数で住所を検索する 6 「様式」とはシート(Sheet1)での「決めた1セル」のことだと思うが その氏名に対応した住所のセルに住所を代入する。 ーーー 例データ クリックして選択した結果 VLOOKUP用の検索範囲 ↓     ↓ A2:B4 G2:G4 木村 前橋市 田中 横浜市 田中 横浜市 木村 前橋市 斉藤 市川市 斉藤 市川市 ーーー VBA関連操作 リストボックスで右クリック プロパティを選択 Rowsource G2:H4   「コードの表示」で出るVBE画面下記を作成 Private Sub ListBox1_Click() MsgBox ListBox1.ListIndex Selection = ListBox1.List(ListBox1.ListIndex) Selection.Offset(0, 1) = WorksheetFunction.VLookup(Selection, Range("G2:H4"), 2, False) Selection.Offset(1, 0).Select End Sub ーーー 操作 Sub/Userformの表示 リストボックスのアイテム(氏名)を選択 多数の人の住所を連続して選択してシートの列に上から並べて 表示する仕様で例を作成 (回答者の好みから、この方が将来勉強に役立つだろうと思い) 木村、田中、斉藤の順にリストボックスをクリック (質問者の「様式」とは1人分かもしれないが、不十分な記述でわかりにくく、こうした) 様式そのものの説明が質問に要るだろう。

masakey4
質問者

お礼

ご丁寧に表現の方法からご指導頂き有難うございました。 また、自分のやりたい事と作動して欲しい事と上手く表現出来なく回答しずらい中、 順序だてての解説ありがとうございました。 参考にさせて頂きトライして見たいと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • dogs_cats
  • ベストアンサー率38% (278/717)
回答No.1

下記サイトの Private Sub ComboBox1_Change()に記載されてる 「VLookup」でデータ取得又は「ListIndex」で取得で可能だと思います。 電話番号がリストボックスに存在するのであればListIndexで可能ですが、シートから取得するのであればVlookupでの取得となるでしょう。 例題はComboBox1となっていますのでListBox1に変更下さい。 http://www.geocities.co.jp/SiliconValley-Bay/2717/VBA/excel_071_vl_id.htm ユーザーフォームのリストボックスのデータ表示、リスト取得データのワークシート画像添付すれば回答者が理解しやすくなると思うのですが。

masakey4
質問者

お礼

ご回答有難うございました。 基本が解ってなく初めてのVBAなのですがサンプルをDLして確認しながら 無事、作動させる事が出来ました。 解らないなりに画像添付すればよかったようで今後の参考にさせて頂きます。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel VBA ListBoxについて

    お世話になります。 Excelで以下のようなフォーム画面を作成しております。 1.フォーム画面には、リストボックス、テキストボックス、登録ボタンを設定 2.リストボックスには、Sheet1のデータが表示される。 3.リストボックスのレコードを選択すると、選択した値がテキストボックスに表示される。 4.登録ボタンをクリックすると、テキストボックスのデータが、Sheet1に反映される。 今1~3まではできましたが、4で悩んでおります。 テキストボックスの値を取得してセルに反映させようと以下のコードを書きました。 'リストボックスで選択したレコード数 ListNo = Me.ListBox1.ListIndex 'TextBox1の値を、Sheet1のセルにセット Sheets("sheet1").Cells(ListNo, 1).Value = Me.TextBox1.Value  これを実行すると、何故かここから3のリストボックスのレコードをクリックしたイベントを呼びます。 Private Sub ListBox1_Click() クリックしてもいないのですが、Private Sub ListBox1_Click() を呼ばないようにしたいので、 ListBoxをEnableプロパティをfalseにしても、呼んでました。 呼びにいかない方法をご教授いただけますでしょうか。 よろしくお願いいたします。

  • エクセル マクロ ユーザーフォームの設定について

    続けて失礼いたします。 エクセルのマクロについての質問です。 まず、Sheet2に    A   B      C     D     1  abe 安部・・  東京都・・  03・・ 2  asai 浅井・・  神奈川県・・ 04・・ 3  asida 芦田・・  ・・     ・・ などのリストがあると仮定します。 一番はじめにお願いしたいのは、ユーザーフォームのTextbox1にSheet2のA列に相当するアルファベットを入れると、Listbox1にアルファベットに見合った氏名が表示できればと思っております。 難しいかもしれませんが、もしできるのでしたら、Textbox1へのアルファベット入力の途中での抽出ができるようになると、とても助かります。例えば、『a』を入力すると『安部、浅井、芦田』が表示され、つづいて『as』と入力すると『浅井、芦田』が表示できる様なシステムです。 2番目におねがいしたいことは、Listbox1のある氏名を選択すると、Sheet1のある特定のセル(E18)に『氏名』、その下に『住所』、『電話番号』が入力されるようにできたらと考えております。 どちらの質問でもかまいませんので、詳しい方がおりましたら、是非お願いします。

  • excel ユーザーフォームでシートごとに転記

    excel vbaでユーザーフォームを作りました。 その中で ComboBox1に「青」を選択すると(TextBox1、TextBox2)がSheet1に ComboBox1に「赤」を選択すると(TextBox1、TextBox2)がSheet2に 転記されるようにしたいと思っています。 (ComboBox1の青や赤は転記する必要なし) どのようにすればいいのか、どなたかご教示願います。 よろしくお願いします。

  • ExcelでListBoxを閉じるには?

    Excelにリストボックスを作成します。 そして、特定のセルの値が変更されたら、入力候補をリストボックスに表示する。 リストボックスの項目をダブルクリックまたはEnterキーを入力したら、 リストボックスを非表示にする。 (要は、オートコンプリートなんですが、入力候補は別シートの値を表示したい) ということをしたいのです。 が、VBAで Private sub ListBox1_KeyDown(...) ListBox1.Visible = false end sub とやってしまうと、excelがアプリケーションエラーで死んでしまいます。 どのようにすればよいのでしょうか? よろしくお願いします。

  • ListBoxの仕様について

    ListBoxの仕様について フォーム内でListBoxを使ったVBAを作りました。(動作問題なし) デザイン的な問題で、ListBoxをシート上に直接置こうと思い、 作りこんでいきました。 しかし、フォーム内で使っていたときは、RowSourceプロパティが使えたのに対し、 シート上のListBoxでは、RowSourceプロパティが使えませんでした。 何か仕様が異なるのでしょうか? 「シート内ListBox」「RowSource」などのキーワードで探してみましたが いまいち参考になるサイトも見つかりません。

  • excel vba listboxについて

    EXCELのVBA LISTBOXに関することで質問です。 ワークシート1のA2-5セルに取引先名を入力してあります。 UF1という名前のユーザーフォームの中にリストボックスを作成し、ワークシート1のA2-5の取引先を表示するには、 Private Sub UserForm_Initialize() Dim torihiki As String torihiki = Worksheets(1).range("A2:A5") UF1.ListBox1.List() = torihiki End Sub と打ち込んでいます。 ちなみに、ユーザーフォームは以下のようにOKボタンで閉じるようにしました。 Private Sub CommandBottan1_Click() unload UF1 End Sub 質問したいのはここからですが、 上のユーザーフォーム内のリストボックスで選択された取引先をTRHKという変数に代入したい場合、どうしたらいいのでしょうか? 私の少ない知識を振り絞って以下のように考えてみたのですが、 TRHK = UF1.ListBox1.List() としても代入されていないようです。 List()ではないメソッドが必要なのだと思うのですが・・・・ .Selectedとかでしょうか? どなたか、ご教授願います! 宜しくお願い致します。

  • 【Excel VBA】ユーザーフォームについて

    Excel2003を使用しています。 Sheet1のある範囲のデータをSheet2に(アクティブセルに)コピーするというマクロを作成しました。 データをコピーする際、範囲中のいくつかのセル(2~3箇所ですが)のデータを書き換えて、コピーするときもあるため、変更箇所がある場合は入力モード等の関係もあるので、ユーザーフォームを使って、書き換えるようにしました。 コピー元の範囲を変えただけの同じようなマクロが複数あるのですが、テキストボックスやコンボボックスに入力されたデータをシートへ転記する際のセルの位置が変わるだけなので、ひとつのユーザーフォームを使いまわしというと変ですが、そのようなことはできないのかなと思い、質問させていただきました。 -------------------------------------------------------------- Private Sub CommandButton1_Click()   Range("F371").Value = TextBox1.Text   Range("N371").Value = ComboBox1.Text   Unload Me End Sub 上記コードは、ユーザーフォームのコードの一部ですが、 Range("F371").Value = TextBox.1Text      ↓ Range("F397").Value = TextBox.1Text のように、転記先のセルだけ変わればいいので、そのために、同じユーザーフォームをいくつも作るのも…と思った次第です。使いまわしのようなことはできなければ、コピーして作成しようと思っています。 うまく文章に表すことができなくて申し訳ないのですが、よろしくお願いします。

  • Excel ユーザーフォームからの転記

    Excel ユーザーフォームからの転記 はじめまして、ご教授願います。 Exceiのユーザーフォーム内のテキストボックスのデータをシートに転記したいのですが、 教えてください。 テキストボックス内の改行を含んだデータを改行で区切って、別々のセル(縦に順に)に転記 したいのですが、方法がわかりません。 VBAでどのように書けばよろしいのでしょうか。 ご教授よろしくお願いします。

  • VBA ユーザーフォーム

    こんばんわ。 VBA、ユーザーフォームで、ListBoxか、Comboboxで、セルの値を参照し、そこから1つ選択するようにするにはどういうコードがりますか? Private Sub Userform_Initialize   Listbox1.AddItem "700" Listbox1.AddItem "701"   ・・・・・   ・・・・・   ・・・・・ End Sub と、やると、ListBoxには反映しますが、列が多すぎて、作成するのに手間が掛かる為、例えば、"700" の値に、Sheets(1)のC2から、C500の値を入れるようなコードはありますか? 宜しくお願いします。

  • ユーザーフォームでチェックしたシートを保存する方法

    「台帳」というExcelのブックに「リスト」「印刷用1」「印刷用2」「印刷用3」…というように複数のシートがあります。「印刷用1」…はVLOOKUP関数を用いて「リスト」に入力したデータを参照しています。 現在ユーザーフォームを用いてチェックを入れたシートを出力できるようになっているのですが、このユーザーフォームを利用してチェックを入れたシートをリンクを外した状態で1つのブックとして保存させる方法はないでしょうか? 詳しく言うと、例えば「印刷用1」「印刷用3」をコピーして新しいブック(ファイル)を作成し、シート名はそのまま維持してファイル名は「A1」セル(全シート共通です)の内容に、加えてVLOOKUP関数で取得しているデータはリンクを外してテキストに変換し、現在のフォルダに保存するという作業をVBAを使用して自動化させたいのです。(上司の要望です) もともとあるユーザーフォームは前任者が作成したもので、当方はVBAは用語もろくにわからない全くの初心者ですので、詳しい解説も添えていただけると勉強にもなり非常に助かります。 よろしくお願いいたします。