• ベストアンサー

エクセル VBAのリストボックス

エクセルのVBAでユーザーフォーム上のリストボックスに文字を入力すると候補がドロップダウンリストに表示され、候補から一つを選択するとドロップダウンリストをとじるといったコードを教えてください。ただし、最終的にリストボックスの値はリストから選ぶのみで、文字を入力するのは候補を表示するためだけに使いたいのです。どなたか、ご教授願います。

  • 50000
  • お礼率47% (22/46)

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

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.3

実用的な使用法には思えませんが やろうと思えば出来る? A1~A9、B1~B9、C1~C9、各範囲に候補を作成 userformにcomboboxを作成し、コードをコピペ userformを実行し comboboxに文字を入力 a、b、cを入力すると aならA1~A9のりスト bならB1~B9のリスト cならC1~C9のリストが それぞれ表示され、リスト以外の文字が選択できなくなる Private Sub ComboBox1_Change() Select Case ComboBox1.Value Case "a" ComboBox1.RowSource = "a1:a9" ComboBox1.MatchRequired = True Case "b" ComboBox1.RowSource = "b1:b9" ComboBox1.MatchRequired = True Case "c" ComboBox1.RowSource = "c1:c9" ComboBox1.MatchRequired = True End Select End Sub 参考までに アレンジはご自分で

その他の回答 (2)

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.2

コンボボックス一つでは出来ないと思います。 データ格納用、データ入力用、データ表示用 が必要になると思います。 一番単純なのは、データを配列に格納しておき、 テキストボックスに文字を入力、テキストボックス のデータを参照して配列からデータ抽出、コンボボックス に表示、というものでしょうか。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

コンボボックスは入力を受け付けるけどリストボックスは 入力を受け付けなかったと思います。 テキストボックスに文字を入れ、候補をリストボックスから 抽出、抽出したものを別のリストボックスかコンボボックスに 表示、ではだめですか? なお、リストボックスはリストを閉じることは出来ません。 (リストボックス事態を非表示にすることは出来ます) コンボボックスならできます。

50000
質問者

補足

すみませんでした。質問が間違っていました。リストボックスではなくコンボボックスでした。

関連するQ&A

  • EXCEL リストボックスについて

    現在、エクセルであることをしようとしているのですが、どうやってやったらいいのかわからないので、ぜひ教えてください。 それと出来るかどうかも教えてください。 内容といたしましては、エクセルのシートの中にあるセルを選んだときにリストボックスを表示して、そのリストボックスにある内容を選んで確定するとその選んだ文字が入るようにしているのですが、入力規則からのリストボックスだとシート自体を小さくすると中の文字が見えなくなり、選びづらくなります。 そこで、コンボボックスで同じことをすると、文字のサイズが大きくなるのですが、印刷時に下向きの矢印も一緒に表示されてしまいます。 そこで、別の視点から考えて、セルを選んだ時にリストボックスみたいなユーザフォームをだし、そこで選んだ文字を選んだセルに表示すれば、印刷時に表示もしないし見た目も良くなると思うのですが、出来そうですか? 出来るのであれば、ぜひ教えてください。 出来れば、VBかVBAで出来るのか、教えてください。

  • エクセル・VBAでテキストボックスに入力された文字を

    エクセル・VBAでテキストボックスに入力された文字を B列から検索し、結果をユーザーフォームのリストbox に表示したいのですがうまくいきません 検索は部分一致・大文字小文字無視で行いたいです よろしくお願いします

  • VBAのリストボックスについて

     今、ユーザーフォームをつくり、その中にリストボックスを配置したんですけど、セルに入力されている値を表示したいと思い、RowSourceプロパティに"sheets1!A1:C100"と指定しました。しかし、実際リストボックスに表示されたのは先頭のA列だけで、B、C列は表示されませんでした。どうしたらこれらは表示できるのでしょうか。もとの参照データが膨大な為、よろしくお願いします。

  • エクセルVBAのリストボックス

    エクセルVBAのリストボックスを使った検索システムを作っています。 リストボックスはユーザーフォームではなくsheetに貼り付けてます。 リスト地域 北海道 青 森 岩 手 山 形 新 潟  ・  ・  ・ リストボックスから地域(複数選択)を選んで検索ボタン(コマンドボタン)を押すと同じsheetの特定の場所(例えばrange("A25")に選択した地域を表示させたいのですがうまくいきません。 例) 北海道、東京、愛知 のように表示させたいです。 単数選択ではうまく表示できるのですが、複数だとうまくいきません。 (複数選択できるようにプロパティのMultiSelectの項目はfmMultiselectMultiに変更しています。) よろしくお願いします。

  • エクセル2007VBAで検索するコードを知りたい。

    エクセル2007(Excel2007)のVBAで【検索と置換】と同等の機能をもった検索アプリケーションを作りたいのですが、 そのコード(コマンドボタンを実行したときのコード)を教えていただけないでしょうか。 (おそらくですが、リストボックスのコードも必要だと思います。) 正しくは、【検索と置換】から【置換】機能を無くしたものとイメージしていただきたいです。 ●設置するもの ユーザーフォーム(UserForm1) テキストボックス(TextBox1) コマンドボタン(CommandButton1) リストボックス(ListBox1) ●仕様 ユーザーフォームのテキストボックスに入力してコマンドボタンを押すと、検索対象を見つけ、 リストボックスにその対象一覧を行ごとに表示するものになります。 ●検索するときの条件 (1)大文字と小文字を区別しない (2)半角と全角を区別しない (3)部分一致すれば(一部でも一致すれば)検索対象にする (4)今、開いているワークシート上の「全てのセルが検索対象(列や行を指定しない)」 ※検索されたセルの存在する行ごとに、ユーザーフォームのリストボックスに(1行ずつ)表示したいです。 そして、リストボックスに表示されたデータのうち、どれか1つを選ぶと、その選択対象の行の【D列】にアクティブセルを移動するようにしたいです(画面もアクティブセルが見える位置にスクロールします)。 ●リストボックスに(1行ごとに)表示するもの● ↓↓↓ (左から)I列の値、D列の値、O列の値、Q列の値(→4列の値になります) ※リストボックスにQ列の値が表示された場合のみ(Q列に何かしらのデータがある場合のみ)、 リストボックス上の【その行の(I列の値、D列の値、O列の値、Q列の値の)文字すべてを赤色】にして表示していただきたいです。 分かる方がいましたらよろしくお願いいたします。

  • エクセルVBAのリストボックスについて

    こんにちわ! エクセルVBAのリストボックスの質問です。 現在、エクセル上では時刻データフォーマットが日付データになっているのですが、リストボックスに表示させると数値データになってしまいます。 具体的には エクセル上⇒11:00 リストボックス上⇒0.45833… となってしまいます。 どうしたら直るのでしょうか? アドバイスの程よろしくお願いいたします。 ちなみにエクセル2003での事象です。

  • Excel VBA ユーザーフォームのコンボボックスに表示する値の入力方法

    Excel Xを使用して、VBAのユーザフォームにコンボボックスを作りましたが、どうしてもコンボボックス内に表示する値の入力方法が分かりません。 WEBや本などで「これ」と思われるものを実験していますが、どれも表示することができません。 できるだけ詳しく教えていただけませんか? したいことは、  cbocenter というコンボボックスに値を出します。  値は List シートの A2 から A18 に入力済みです。  それと値から選択した値を data シートの J列 に  表示させたいのです。(行の指定はできています) 本当に困ってます。よろしくお願いします。

  • VBAでエクセルの入力規制のリストに書式設定?

    エクセルのあるセルに 入力規制→リスト→任意の名前 を指定し、ドロップダウンできるようしています。 リストの内容が単位なので lb/ft3 kg/m3 g/cm3 となっているのですが3は乗数なので上付き表示したいのですがVBAなどで表示できますでしょうか。(ユーザが選択した段階で表示変更したい)

  • エクセルVBAでコンボボックス

    エクセルVBAのコンボボックスの使い方について質問します。 実現したいプログラムは 「チェックボックスから選んだ数字で計算するプログラム」 です。 具体的には… まず、コンボボックスをシート上に配置します。そのコンボボックスには 数字の1から10を選べるようにしておきます。 次に、コマンドボタンを配置します。これは単にプログラムをスタート させる目的です。 ユーザーは、まずコンボボックスから好きな数字を選択します。 そしてスタートボタン(コマンドボタン)を押します。 すると、選んだ数字の2倍がセルに表示されます。 さらに発展系としては… チェックボックスを4つ配置します。各チェックボックス には、+、-、×、÷を割り振っておきます。 また、コンボボックスを2つ用意し、それぞれ1~10の数字をリストにします。 ユーザーは、チェックボックスから好きな記号を選び、さらにコンボボックスから 好きな数字を選びます。そしてスタートボタンを押すと、選んだ数字を選んだ記号 で計算した値がセルに表示されます。 というようなプログラムを考えているのですが、うまくできません。 ポイントは、 ・チェックボックスにリストを入力する方法 ・チェックボックスの選択状態や、リストボックスから選ばれた数字を、  変数として取得する方法 インターネットで調べているのですが、リストボックスに値を入れるのにもマクロを走らせ なければならない方法とか、ユーザーフォームでの説明ばかりでなかなか実現に至りません。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_userform05.html プログラムのイメージ図としては添付の図の通りです。 どのようにプログラムを書けばいいのでしょうか。

  • VBA リストボックスのスクロール制御

    おはようございます。 大変恐縮ですが、EXCEL VBA リストボックスの制御についてご教授、お願い致します。 現在、リストボックスにボタンを押すと文字列一覧が表示されるようにしております。(複数回押下することもある) リストボックスに文字列が追加されるごとに、スクロールが動いてしまい、 新しい情報はスクロールを動かさないと表示できないようなのですが なにか、ユーザーが動かさなくても、常に新しい情報を表示するようには できないものでしょうか?

専門家に質問してみよう