• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ExcelVBA コンボボックスに入力があったらリンクしてテキストボックスを更新したい)

ExcelVBA コンボボックスのリンクとテキストボックスの更新方法

このQ&Aのポイント
  • ExcelVBA コンボボックスのリストから項目を選択すると、テキストボックスの内容を更新する方法について説明します。
  • 特定のコンボボックスの選択に応じて、別のシートから情報を取得してテキストボックスに表示する方法を紹介します。
  • コンボボックスのChangeイベントを使用して、選択された項目の情報を取得し、テキストボックスに表示されるようにします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 今は、Form というのは、UserForm のことだと思います。Excelには、フォームツールもありますが、レガシーツールですから、割愛します。 >セルA1とコンボボックスをリンクさせ、セルB1にVLOOKUP(A1,一覧,2)で一覧から名前を抽出しました。 UserForm で、なぜ、ComboBox で、A1 にリンクさせるのでしょうか? リンクというのは、ControlSource のことだと思います。それでは、出来ませんね。 Change イベントに組み込まないといけません。そのような方法をしなくても可能です。 '------------------------------------------- たとえば、ワークシートのセルに社員コードと社員名を入れたもの書かれてあるとします。 次に、ComboBox のプロバティの「RowSource」に少なくとも、2列を登録します。 なお、ComboBoxは、2列も入れることが可能です。 ColumnCount | 2 ,ColumnWidth | 20 pt; 20 pt (pt は省略可)のようにすることが可能です。 そうして、以下のようにすれば、テキストボックスに出てくるはずです。  .ListIndex + 1 と+1しているのは、初期値が -1 で、最初が、0 からだからです。 '------------------------------------------- Private Sub ComboBox1_Change() Dim ret As Variant   With ComboBox1   ret = Application.VLookup(.ListIndex + 1, ActiveSheet.Range(.RowSource), 2)   If Not IsError(ret) Then    TextBox1.Value = ret   End If   End With End Sub '------------------------------------------- ActiveSheet よりも、Worksheets(____) と入れたほうがよいです。

ff11111111
質問者

お礼

知識がないために出来る範囲でやろうとして、まったく無駄なことをしていたようです。 勉強不足を痛感いたしました。 教えていただいた記述で思ったとおりの処理が出来ました。 ありがとうございました。

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

その他の回答 (1)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

同じことを試して見ましたが、コンボボックスの選択イベントでテキストボックスの値は更新されました。 駄目だったコードを提示して見てください。 あと、Excelのバージョンも。

ff11111111
質問者

補足

コンボボックス社員コードのChangeイベントで Sheets("一覧表").Range("A1") = Int(社員コード) 社員名 = Sheets("一覧表").Range("B1") B1のセルには「=VLOOKUP(A1,一覧,2)」という関数が入っています。 Excelは2003を使用しています。 よろしくお願いいたします。

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

関連するQ&A

  • テキストボックスのデフォルト設定とコンボボックスの更新について

    テキストボックスのデフォルト設定とコンボボックスの更新について エクセルのVBAで、ユーザーフォームを使用しています。 ユーザーフォームの中にはコンボボックスとテキストボックスとボタンがあります。 コンボボックスには「ABCDEFGHIJKLM」と合計13のリストがあります。 ユーザーフォーム起動時に、コンボボックスには最初のリスト(A)が表示 されていて、「次へ」ボタンと「戻る」ボタンの2つを用意しています。 (1)ユーザーフォーム起動時にテキストボックスに「0」を入れる方法を教えていただけないでしょうか。 コンボボックスで「A」が選択された状態で「次へ」ボタンをおしたら「B」が選ばれる。 「D」が選択された状態で「次へ」ボタンをおしたら「E」が選ばれる。 「M」が選択された状態で「次へ」ボタンをおしたら「A」が選択される。(リストの最初に戻る。) というのは、次のVBAで上手くいきました。 If Combobox1.ListIndex < Combobox1.ListCount - 1 Then Combobox1.Text = Combobox1.List(Combobox1.ListIndex + 1) Else Combobox1.Text = Combobox1.List(0) End If (2)しかし「E」が選択された状態で「戻る」ボタンをおしたら「D」が選ばれる。 「G」が選択された状態で「戻る」ボタンをおしたら「F」が選ばれる。 「A」が選択された状態で「戻る」ボタンをおしたら「M」が選ばれる。(リストの最後に戻る。) といった内容のマクロがうまく組めません。 教えていただけると助かります。

  • コンボボックスの自動更新について

    コンボボックスの自動更新について エクセルのVBAで、ユーザーフォームを使用しています。 ユーザーフォームの中には「入力」ボタンとコンボボックスと テキストボックスがあります。 コンボボックスは、「ABCDEF」と6つのリストがあります。 ユーザーフォーム起動時には、コンボボックスは空欄で コンボボックスから、入力したい商品を選んで、入力ボタンを押して コンボボックスとテキストボックスの内容を入力・コンボボックスを 空欄に戻しています。 これを、「A」を選んで入力ボタンをおしたら「B」が選ばれる。 「B」を選んで入力ボタンをおしたら「C」が選ばれるといったように コンボボックスに表示されるリストを自動で更新することは できないでしょうか? Select case などを利用して組み立てようとしたのですが、 数時間以上調べても出来ません。 教えていただけると助かります。

  • 【Excel・マクロ】コンボボックス・テキストボックスからのデータの入力について

    教えて下さい! 今シートにはA列に日付(2003/1/1~2010/12/31)、B列からI列の1行目には項目名が入っています。 これから行いたいことは、別マクロで表示させたフォームのコンボボックスから日付を選択し、同じフォーム上にある項目名に沿った8つのテキストボックスにデータを入力することにより、そのデータがシートに反映されるというものを作成したいのです。 データが入力される部分は選択された日付の行の、各項目名と交わる部分となります。 (例)        |あああ|いいい|ううう・・・ 2003/1/1 |    |    | 2003/1/2 |    |    | 2003/1/3 |    |    | ※上の表だとコンボボックスから2003/1/2を選択し、テキストボックス「いいい」部分にデータを入力するとC3セルにデータが入力されます。 コンボボックスにデータを表示させることは出来るのですが、そこから先(この日付を選んでテキストに入力して・・・)が出来ません。 よろしければ、記述を教えて頂きたいと思います。 宜しくお願い致します。

  • エクセルのコンボボックスの内容にリンクをはるには?

    お世話になります。 エクセルにフォームを置いています。 そのフォームにはコンボボックスがあります。 コンボボックスの内容は別シートより読み込んでいます。 コンボボックスである内容が選択されたときに、 その選択内容にリンクを貼り、別シートにあるリンク先へ 飛ぶようにするにはどのような仕組みが必要でしょうか。 よろしくお願いします。

  • チェックボックス・コンボボックス

     エクセルのチェックボックス・コンボボックスについて教えて下さい。  チェックボックス・コンボボックスを作成しリストから選択すると、リンクするセルには番号が表示されてしまいます。以前は正確にリスト名が表示されていました。  どこか設定のようなものを変えてしまったのでしょうか?初心者なものでよく分かりません。どうかよろしくお願いします。

  • ExcelVBA コンボボックスリストのリセット

    4月からマクロを勉強し始めて、壁にぶつかっています。 ユーザーフォームでオプションボタンの下にコンボボックス(1)を、そのさらに下にもうひとつコンボボックス(2)をレイアウトしました。 コンボボックス(1)は選ばれたオプションボタンによって、異なるリストを表示させるようにしてあります。 わからないのは、コンボボックス(2)のリストをコンボボックス(1)で選ばれた文字によって変えたいのです。 たとえば、コンボボックス(1)で"A"と選択されたら、コンボボックス(2)にはリストA'が、(1)で"B"と選択されたら、(2)にはりすとB'が…、というように、場合分けさせたいのです。 方法をご存知の方がいらっしゃいましたら、ご教示ください。よろしくお願いいたします。

  • Accessレポートでコンボボックスが動かない

    Access2010のレポートでコンボボックスを使いたいのですが、コンボボックスが正しく表示されず困っています。 表示されないというのは、コンボボックスのリストを選択する逆三角形が表示されず、またリストも全く表示されません。つまりテキストボックスのように空のの四角い箱が表示されてしまいます。 表示したいリストはあるテーブルから引っ張っているのですが、全く同じことをリストボックスでやろうとするとすべての項目がうまく表示できることは確認しました。 またフォームの方ではコンボボックスをから項目が選択できることも確認できています。 レポートではコンボボックスが使えないような仕様になっているのでしょうか? お分かりになる方教えていただけますでしょうか?

  • ユーザーフォームのコンボボックス

    エクセルのユーザーフォームでの質問です。 コンボボックスの項目についてsheet2のB2~B10を選択したいのですが、このユーザーフォームはsheet1で使うもので、プロパティのrowsource欄にセルを選択できません(やり方が分かりません)。 どう入力したら別シートのセルをコンボボックスに反映出来るのでしょうか??

  • エクセルのコンボボックスについて

    シート「データ」に   A  B 1 い  東京 2 ろ  千葉 3 は  埼玉 上記内容が記載されています。 それを別のシートで参照できるようにリストを作って入力規則でコンボボックスを作りました。 しかし、コンボボックスには選択肢がひとつしか表示されません。 「い、ろ、は」だけが表示されています。 でも本当は「東京、千葉、埼玉」をコンボボックスで表示し、セルには「い、ろ、は」のどれかを表示するようにしたいのです。 これをマクロを使わないでできるでしょうか?

  • コンボボックスを自動更新

    お世話になります。 シート1のA1セルに 名前 B1セルに期限と入力してあり A2セル リンゴ  B2セル 1703 A3セル バナナ  B3セル 1703 A4セル ぶどう  B4セル 1704 A5セル キウイ  B5セル 1704  A6セル お米   B6セル 1706 A7セル 酒    B7セル 1708 以下 同様に入力しています。 B2以下に入力されているのは4桁の数字で 小さいほうから大きいほうに並んでいます。 同じ数字が入力されていることもあり、 また欠番も存在します。 この期限をユーザーフォームにコンボボックス設置して 重複なし表示させています。以下のコードです。 Private Sub UserForm_Initialize() Worksheets("Sheet1").Select 名前.Value = Cells(2, 1).Value 期限.Value = Cells(2, 2).Value X = 期限.Value nextGyo = Range("B:B").Find(X).Row 'Dim リスト As New Collection 'Dim 列 As String, 上端セル As String, 最下端セル As String 'Dim セル範囲 As Range, 各セル As Range 列 = "B" '※3 上端セル = 列 & "2" '※4 最下端セル = 列 & "65536" With Worksheets("Sheet1") '※5 Set セル範囲 = .Range(.Range(上端セル), .Range(最下端セル).End(xlUp)) End With For Each 各セル In セル範囲 'セル範囲の各セルについて繰り返し処理 On Error Resume Next '次行が実行時エラーならその次行から継続 リスト.Add 各セル.Value, CStr(各セル.Value) 'Collectionオブジェクトにメンバを追加 If Err.Number = 0 Then '実行時エラーが発生していなければ Me.期限.AddItem 各セル.Value 'コンボボックスのリストに項目を追加 End If On Error GoTo 0 Next End Sub 上記の例だと「1703」「1704」「1706」「1708」の 4種類から選択できる状態です。 ここでコンボボックスで1704を選択して (コンボボックスには自由に入力はさせずにリストの中から選ばせるようにしています) ユーザーフォーム上のボタンを押すと A4セル ぶどう  B4セル 1704 A5セル キウイ  B5セル 1704 を行削除して空白行を上に詰めるコードを書きました。 ただこのときコンボボックスには リストの更新がされないので「1704」が表示されたままです。 削除した時点で「1704」がない状態にするには (自動更新をかける) どうしたらよいでしょうか? (削除するコードの中に  Call UserForm_Initialize と書いてみたのですが  何も変化ありませんでした) どうかよろしくお願いいたします

誤送金4600万円回収の人件費
このQ&Aのポイント
  • 誤送金した4600万円の回収が進んでいます。
  • 弁護士の活躍によりほぼ全額の回収が見込まれています。
  • 事件の原因は仕事ができない役所の職員の確認ミスです。
回答を見る

専門家に質問してみよう