重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

エクセル97です。ユーザーフォームにおいたコンボボックスに表示させたいワークシート上のリスト、およびコンボボックスで選択された値をリンクさせたいセルの指定方法がわかりません。オプションボタンやチェックボックスのリンク先指定方法もわかりません。またユーザーフォームには「OK」「キャンセル」ボタンもないのでしょうか?
エクセル95のときはダイアローグシートにコンボボックスを置き、コントロールの書式設定で簡単に指定が出来たのですが、97に変えてからは、敢えてエクセル5.0のダイアローグを挿入しないといけないようなので、出来ればユーザーフォームで作ってみたいのです。どうかよろしくお願いします。

A 回答 (5件)

こんにちは。

エラーが出てしまったようですね。エラーは、ブック名とシート名の大文字・小文字・全角・半角の違いによって起こっていると思われます。まず、ブック名をブック1・シート名をシート1と変更してRowsourceプロパティーに次のように入れてみて下さい。
[ブック1.xls]シート1!A1:A10 
1は、A全角でも半角でもどちらでもかまいませんが、もし全角でブック名を指定したのであれば、ローソースプロパティーも全角で入力します。これで、動作するはずです。

>また、ユーザーフォームではなく、ワークシート上にComboBoxを置いた場合、プロパティウィンドウのには「RowSouce」の表示はなくなり、「ListFillRange」の右隣に表示したいセル番地を a1:a10 のように入れれば表示され、ComboBoxで選択した値は「LinkedCell」の右隣に入れたセル番地(たとえば e5)に表示されますよね?
この「LinkedCell」にあたるのはユーザーフォーム上のComboBoxのプロパティウィンドウではどこなのでしょうか?No3で書かれたようなマクロを記述するしかないのでしょうか?

フォームオブジェクトは、どうも「LinkedCell」プロパティーに変わるプロパティーを持っていないようです。私は、コードを書く以外方法がないと思います。
    • good
    • 1
この回答へのお礼

ありがとうございました。
今度は大丈夫でした。
原因はセル番地でa1:a10と書いたことのようです。A1:A10でOKでした。
助かりました。

お礼日時:2002/11/01 01:45

問題を理解できてないかもしれませんが、


ワークシートに直接貼り付けたコンボボックスと同じ
だと思いますが、コントロール(この際コンボボックス)
を右クリックし、プロパティをクリック。LinkedCellと
ListFillRangeがありますが、ここにRange(B1とかA1:A10とか)を入れて試して、実見してみてください。察するに、質問がVBAベースでの事でなく、操作ベースのことなのではないのでしょうか。
リストボックスもオプションボタンもチェックボックスもLinkedCellがプロパティにあります。後者2者はTrue
かFalseで値がセットされると思います。
    • good
    • 0
この回答へのお礼

早速ありがとうございます。
ワークシート上にComboBoxを置いた場合はそうでした。
しかしユーザーフォーム上に置いた場合は、プロパティウィンドウのには「ListFillRange」や「LinkedCell」の表示はないんです。「ListFillRange」にあたるのが「RowSouce」だろうとはNo1の方の回答で推測できましたが、「LinkedCell」にあたるのはユーザーフォーム上のComboBoxのプロパティウィンドウではどこなのでしょうか?

お礼日時:2002/10/31 13:10

すみません。

間違えて回答ボタンを押してしまいました。
>コンボボックスで選択された値をリンクさせたいセルの指定方法がわかりません。
Workbooks("ブック名.xls").Worksheets("シート名").Range("セル番地").value = フォーム名.コンボボックスのオブジェクト名.text
例えば、商品というブックのシート1のA3にコンボボックスの値を代入したい時は、
Workbooks("商品.xls").Worksheets(1).range("A1").value = Userform1.combobox1.Text
これを続けて書いて下さい。指定したセル番地にコンボボックスの値が入力できます。

頑張ってみて下さい。
    • good
    • 0

すみません。

間違えて回答ボタンを押してしまいました。
>コンボボックスで選択された値をリンクさせたいセルの指定方法がわかりません。
Workbooks("ブック名.xls").Worksheets("シート名").Range("セル番地").value = フォーム名.コンボボックスのオブジェクト名.text
これで、指定したセル番地にコンボボックスの値が入力できます。

頑張ってみて下さい。
    • good
    • 0

初めまして。


まずコンボボックスにデータをリンクさせる方法は、次のように操作します。

・フォーム上のコンボボックスをクリックし選択した状態で、画面左下にプロパティーウインドウ(もし表示されていない時は、VBE画面のメニューバーの表示→プロパティーウインドウを順にクリック)のRowSourceプロパティーの右側にリンクさせたいセル番地を入力する。
リンクさせたいセルがA1~A50の時
[ブック名]シート名!A1:A50と入力する。

>オプションボタンやチェックボックスのリンク先指定方法もわかりません。
この意味がよく理解できません。オプションボタンやチェックボックスを何とリンクさせたいのか教えて下さい。

>またユーザーフォームには「OK」「キャンセル」ボタンもないのでしょうか?
これは、コマンドボタンを貼り付けて自分で作ればいいのです。フォームには、コントロールを自分で配置しなければなければなりません。

後、よくVBAのことが理解できていないようですが、非常に詳しくかつ解りやすく説明してある本があるのでご紹介いたします。

簡単プログラミングエクセル2000VBA(基礎編・関数偏・応用編)
著者:大村あつし  出版社:技術評論者
この本は、ラオックスなどパソコンを扱っているショップの書籍コーナーにあると思います。一度ご覧になって見て下さい。
    • good
    • 0
この回答へのお礼

早速ありがとうございます。
ユーザーフォーム上のComboBox1を選択し、プロパティウィンドウの「RowSouce」の右隣に、半角小文字 [book1.xls]sheet1!a1:a10 と入れてみましたが、「Row Souceプロパティを設定できません。プロパティの値が不正です。」となってしまいます。
何がまずかったのでしょうか?

また、ユーザーフォームではなく、ワークシート上にComboBoxを置いた場合、プロパティウィンドウのには「RowSouce」の表示はなくなり、「ListFillRange」の右隣に表示したいセル番地を a1:a10 のように入れれば表示され、ComboBoxで選択した値は「LinkedCell」の右隣に入れたセル番地(たとえば e5)に表示されますよね?
この「LinkedCell」にあたるのはユーザーフォーム上のComboBoxのプロパティウィンドウではどこなのでしょうか?

No3で書かれたようなマクロを記述するしかないのでしょうか?

お礼日時:2002/10/31 13:08

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