• ベストアンサー

エクセルVBAについて質問です。

エクセルVBAについて質問です。 シート1のユーザーフォームにコンボボックスとテキストボックスが各1つずつ、 シート2のA列には1行目から順に「あ」「い」「う」と文字が入っていて、B列には「1」「2」「3」と値が入っています。 コンボボックスのリストにはシート2のA列の文字が選択できる状態にあります。 この状態で、例えばコンボボックスで「い」を選んだら、テキストボックスに自動的に「2」と入る、というように、コンボボックスのリストの中から任意の文字を選択したときに、テキストボックスにB列の値が入るようにするにはどのようにすればいいのでしょうか?よろしくお願いします。

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

  • ベストアンサー
  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.4

#1,2,3です。 再補足です。 コンボボックスのRowSourceプロパティを Sheet2!A1:B5 に初期化しておいて、 コンボボックスのColumnCountプロパティーを 1 にしておいて、 コンボボックスのBoundColumnプロパティーを 2にしておけば、 Private Sub ComboBox1_Change() TextBox1.Text = ComboBox1.Value End Sub でいけます。 このとき、 TextBox1.Text = ComboBox1.Text TextBox1.Text = ComboBox1.Column(0) TextBox1.Text = ComboBox1.Column(1) がどういう値を返すか調べてみると面白いと思います。 参考ページを紹介します。

参考URL:
http://www.ken3.org/vba/backno/vba084.html
kamioni
質問者

お礼

いろいろ自分でためしていたら、なんとかできました! TextBox1.Text = ComboBox1.Column(0) TextBox1.Text = ComboBox1.Column(1) もためしたところ、どのような動きをするのか分かりました。一つの動作を作るのにもいろいろなやり方があるなぁと改めて痛感しております。 丁寧な説明ほんとうにありがとうございましたm(__)m

kamioni
質問者

補足

丁寧な回答ありがとうございます。 コードを組むことしか頭になく、プロパティをいじるという考えが全くなかったので、プロパティだとこんなに簡単にできるんだ、と驚きです。 最後にもう一点だけ質問があります。回答される方が答えやすいように、一番簡単な形で質問をしたために出てきた問題です。 RowSourceプロパティの部分ですが、シート2の文字や値は別のユーザーフォームを使って書き込む形にしています。書き込む箇所はデータがある行の一つ下の行です。従って新しい文字・値が無制限に増えていくような仕様になっているのですが、その場合「Sheet2!A1:B5」のような書き方だと対応できません。どのような書き方をすればよいでしょうか?差し支えなければ回答して下さるとありがたいです。

その他の回答 (3)

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.3

#1,2です。 補足です。 コンボボックスのColumnCountプロパティーを1にして おいてください。 2にすると、リストにA列B列の2列が表示されます。

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.2

質問の内容を勘違いしていました。 コンボボックスのRowSourceプロパティを Sheet2!A1:B5 に初期化しておいて Private Sub ComboBox1_Change()   TextBox1.Text = ComboBox1.Column(1) End Sub でどうでしょうか?

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.1

おはようございます。 これでどうですか? Private Sub ComboBox1_Change()   TextBox1.Text = ComboBox1.Value End Sub 尚、記述場所は標準モジュールではありません。 VBEでユーザーフォームの編集画面において、 コンボボックスをダブルクリックしてください。 Private Sub ComboBox1_Change() End Sub が出てくると思います。 編集中のコンボボックス上で右クリック→「コードの表示」 でも構いません。

kamioni
質問者

補足

前回に引き続き回答ありがとうございます。 TextBox1.Text = ComboBox1.Value ということですが、これだとただコンボボックスで選んだものをテキストボックスに反映させているだけになってしまいます。コンボボックスで選んだ文字が書かれているセルの右側のセルの値をテキストボックスに反映させたいのです。しかもシートが違うので、 「sheets2.~」のようなコードの組み方をしなければならないとは思うのですが…どうでしょうか?

関連するQ&A

  • エクセル VBA フォーム設定について

    いつもお世話になっています。 エクセル VBAでユーザーフォームについて教えてください。 あるシートのデータをフォームに読み込み、違うシートにそのデータを書き込んでいます。元データの列順と書き込むシートの列順が違うので、VBAで設定して使っています。 書き込みはうまくいっています。ただ、書き込む際にフォーム上で少しデータを修正して書き込みを行うのですが、編集したいフォーム上のテキストボックスをクリックすると、データの最後のほうにカーソルが飛んでしまいます。 テキストボックスをできるだけ大きくして対応していますが、限度があります。テキストボックスをクリックした際にデータの最後(文字データで言うと文章の最後を表示してしまう)まで動かずに、クリックしても先頭のままになるようにするにはどうすればいいのでしょうか。 同じように、コンボボックスもクリックするとリストの最後から表示されます。リストの先頭から表示させる方法を教えてください。

  • Excel VBA の質問です

    ユーザーフォームの中のコンボボックスの値をリストから呼び出して選択したとき、テキストボックスの値を同じリストの別の列から表示させたいです 会社の仕事で品番と品名がありますが、必ず品番は一つの固定の品名を持っています。 なので、品番を製品のマスタからひろってきてるのでわざわざ品名を入力するのは面倒です 製品マスタは例えばA列の2行目に ある品番があればその品名がB列の2行目に必ずあります よろしくお願いします

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

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

  • Access→Excelへの出力とVBA

    エクセルのシート1のB列に2種類の数値どちららかを選択させ、 A列の行数にそって入力させたいと考えています。 数値の判断は、 AccessのフォームABCにあるコンボボックスAで ○×を選んだときは「1」、 AccessのフォームABCにあるコンボボックスAで ☆★を選んだときは「2」 をA列に入力されている値の行数だけB列に値を入力させるには、 どの様にしたら良いのでしょうか? Access単品の操作では出来ないと聞きました。 よろしくお願いします。

  • エクセル マクロ 時間

    1)フォームにて時間を表示する。コンボボックス2つ作る。コマンドボタン(記録)を1つ作る。 2)1つのコンボボックスには時を選択させる。リストはリストはSheet2に01・02・03・・・とA列に00まで作る。 3)もう1つのコンボボックスには分を選択させる。リストはSheet2に01・02・03・・・とB列に00まで作る。 4)フォームの記録ボタンを押すと、sheet1のA2に(例 23:34)と表示させたい。 マクロの記述を教えてください。

  • エクセルVBA「コンボボックスの値をワークシートに代入」

    エクセルVBA「コンボボックスの値をワークシートに代入」 連日質問してしまい申し訳ありません。・・・ 今回は「コンボボックス」にリストアップされている値をセルに入力したいのです。 画像を見て頂ければと思いますが、コンボボックス(左ウィンドウ画像)には25の文字列がリストアップされています。 このリストアップされている文字列をすべてワークシートのセルB4からの"4"列に入力したいのです。 なんだか滅茶苦茶ですが、ご理解頂ければご協力お願いします。

  • エクセルについて質問です。

    ユーザーフォームの使い方で、テキストボックスやコンボボックスのControlSourceを,フォームを開いたのとは別のシートのセルにあてたいんですけど、できますか? 同様に、コンボボックスのRowSourceのリストも、別のシートの値を拾いたいんです。 具体的に言えば、ユーザーフォームを開くのは、常に「Sheet1」であって、入力した内容を表示するのは「Sheet2」なのです。 コンボボックスのリストは本当は、「Sheet3」の値を拾いたいのです。 今はよくわからないので、全部「Sheet1」にリンク(?)させて、値を取得させるようにしてます。 それと、セルの数式の中に別のセルの数値を代入できますか? 例えば、あるセルの数式が「=Sheet2!A4」だとしましょう。 この場合の「Sheet2」の「2」に、例えば、ある別のセルの値を代入して、 「=Sheet3!A4」とかにしたいのです。 つまり「=Sheet”A1”!A4」みたいにして、「A1」のセルの値が 「2」、「3」に変われば元の数式も変わる、みたいに。 同じように、セルの範囲につけた名前や、リンクするファイルの名前も数式の変数に入れられるのでしょうか? とりあえず、セルの数式の中に、別のセルの値を”文字”や”数値”として入れたいのです。 ちょっと説明がわかりにくいかもしれないけど、教えて下さい。

  • VBA コンボボックス リスト表示について

    初心者ですいません エクセル VBAのフォームでコンボボックス3つと、テキストボックス3つがあります シートのListにA~F列までのデータがあり、コンボボックス1にA列のリストを表示し コンボボックス2にA列で選んだリストを参照したB列のリストを表示し、コンボボックス3 にコンボボックス1,2で選んだリストを参照し、C列のリストを表示した後、 コンボボックス1,2,3で選ばれたもののD列、E列分をテキストボックス1,2に 反映しようと思っておりますがうまくいきません どのようにしたらよいか、おしえてください 宜しくお願いします ちなみに、リストの内容は A列   B列   C列     D列   E列 テレビ 42インチ  HDD内蔵  台    100,000 テレビ 32インチ  BD内蔵   台     80,000 テレビ 19インチ          台     50,000 ビデオ HDD   1TB     台    100,000   ビデオ HDD   500GB    台     80,000 ビデオ BD            台     70,000 が、入ってます 希望は、質問の際のカテゴリ選択のようになればよいのですが... さらに、希望を言えば、自動で、行ごとに1,2,3...と番号を振るようにしており スピンボタンで番号を選べば、登録された上記のデータをフォームに反映させるようにしております これもうまくいきません お願いばかりで申し訳ありませんが 宜しくお願いします

  • エクセルVBA

    初心者です エクセル2003 ユーザーフォームのコンボボックスの連携について教えてください   Seet1       A     B     C     D      E     F           1   種類1   商品1  商品A  商品あ        コンボ1  2   種類2   商品2  商品B  商品い 3   種類3   商品3  商品C  商品う                4   種類4   商品4  商品D  商品え        コンボ2 5   種類5   商品5  商品E  商品お (1)コンボボックス1と2を別々のユーザーフォームで配置(ダブルクリックにて表示 F1とF4) (2)コンボボックス1でA列の種類を選択によりコンボボックス2のリストが変わる (3)コンボボックス1で選んだ種類をF1のセルに挿入 (4)コンボボックス2は種類1の場合はB列             種類2の場合はC列             種類3の場合はD列のリストとします (5)コンボボックス2で選択した商品をF4に挿入といった具合です 何度か挑戦しましたが、同一ユーザーフォームにコンボボックス2つは成功するのですが うまくいきません コード及びコード記入場所を教えていただけませんか よろしくお願いいたします

  • excel 2003 vba コンボボックス 日付

    始めまして初心者です。よろしくお願いします。 ワークシートのA列に日付、B列に作業内容、C列に作業人員が入力されているとします。 それをユーザーフォームから操作したいです。 ユーザーフォーム上にコンボボックスとテキストボックス1,2を設置しています。 コンボボックスのRowSourceにA列日付をセットしています。 コンボボックスを操作すると、その日付のB列、C列の内容をそれぞれテキストボックス1,2に表示させたいです。

専門家に質問してみよう