• ベストアンサー

ExcelVBA:コンボボックスのリストを手動で変更できなくする方法

ExcelVBAで、コンボボックスに選択する項目、リストが表示されますが、これをキーボードなどで入力できないようにする方法を教えてください。 EnabledやLockedプロパティを使っても選択自体できなくなってしまうので何か方法はありませんか? 回答よろしく願いします。

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

  • ベストアンサー
  • kuroooooo
  • ベストアンサー率47% (8/17)
回答No.1

ComboBoxのキープレスイベントで KeyAscii = 0 にしてしまえば入力を受け付けません。ただしメッセージか何か表示 しないとユーザーは???と思ってしまいます。 もしくは、MatchEntryプロパティにCompleteを設定すれば リスト外の値を入力できなくなります。

miya_HN
質問者

お礼

なるほど。「KeyAscii = 0」はキーボード入力を全て受け付けないんですね。 ありがとうございました。

その他の回答 (1)

回答No.2

Style プロパティを fmStyleDropDownList にしてみて、どうでしょうか? この方法でもやっぱりカーソル " | " 自体は表示されるので、何で入力できないの???と思ってしまうユーザーもいるかもしれませんが。 一応ですが、プロパティペインから各プロパティを選択して F1 キーを押下するとヘルプが表示されます。 プロパティの詳い説明は、そちらを読んでみてください。

miya_HN
質問者

お礼

この方法でもリスト以外は入力できないようになっているんですね。 >この方法でもやっぱりカーソル " | " 自体は表示されるので、何で入力できないの???と思ってしまうユーザーもいるかもしれませんが。 この対処の仕方も考えなければいけないかもしれませんね。 ありがとうございました。

関連するQ&A

  • ExcelVBA:コンボボックスに表示されるリストで一番下に現れる「▲」を消す方法

    ExcelVBAで、コンボボックスに「Additmem」などでリストを表示させると一番下に「▲」の表示が出て、それで左右にリストが見れるようになっています。 しかし、それほど長い文字でもなく「▲」がなくても見れるのでこれを消したいのですが、どうしたらいいでしょうか? 回答よろしくお願いします。

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

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

  • ExcelVBA コンボボックスの表示

    お世話になります。 VBAユーザフォームのコンボボックスのリストにソースから追加しています。 ColumnCountを2に設定しているので、コンボボックスから選択するときにはちゃんと2列表示されるのですが、選択したあとにコンボボックスの表示に残るのは1列目だけなのです。 どのプロパティを変更したらいいのか見つかりません。 ご存知の方がいらっしゃいましたら、教えてください。 よろしくお願い致します。

  • コンボボックスのリスト外入力について(Access2002)

    お世話になっております。 ひとつお聞きしたいのですが、Accessのコンボボックスプロパティの「リスト外入力」の設定のしかたが分かりません。 コンボボックスを非連結にして、コンボボックスより選択してフィルタをかける動作と、コンボボックスに値がなかったらコンボボックスに直接入力して新しい値を元に新規にレコードを追加すると言ったロジックを組み込みたいのですが可能でしょうか?よろしくお願いいたします。 まとめると、 (1)コンボボックスより値を選択して、フィルタをかける。 (2)コンボボックスに値が無かったら、コンボボックスに直接入力して新規レコードとして、レコードを追加する こう言った、流れでの作業です。

  • コンボボックスの値リスト(MS-ACCESS)

    コンボボックスウィザードを使って、値リスト形式で項目を選択するというフォームを作成中です。リストの選択項目数が少ない入力欄には、全ての項目が表示されるのですが、例えば30個という多くの項目を記述すると、13個しか表示されません。ネットで色々検索してみましたが、対処方法が見つかりません。どこか、制限値みたいなものを設定する箇所があるのでしょうか?

  • コンボボックスにリストを表示させるには?

    VC++6.0でコンボボックスにリストを表示させようと思っているのですが プロパティのところのデータに追加しても表示されません ほかに設定するところはあるのでしょうか? もちろんコンボボックスは生きています。 他のhpをみて CComboBox* p = (CComboBox*)GetDlgItem(IDC_COMBO1); p->ResetContent(); p->AddString("項目2"); p->AddString("項目1"); p->AddString("項目4"); p->AddString("項目3"); も試してみたのですがうまくいきません。 よろしくお願いいたします。

  • コンボボックス 1文字入力できてしまう VBA

    お世話になっております。 Excel2003を使用しております。 コマンドボタンを押したときにコンボボックスをいじられては困るので、 コンボボックスの設定を Me.ComboBox1.Locked = True にしているのですが、 1文字入力できてしまい、 自動的にリストの内部を探してしまいます。 これを防ぐ方法(入力も選択もできないようにする方法)はありませんか? Enable=False にするしかないでしょうか?

  • ExcelVBA コンボボックスに入力があったらリンクしてテキストボックスを更新したい

    フォームで入力画面をつくっています。 あるコンボボックスのリストから項目が選択されたら、一覧からリンクさせてテキストボックスの内容を更新がしたいのです。 例えば「社員コード」のコンボボックスで「3」が選択されたら、「社員名」のテキストボックスに別シートに作成してある社員一覧から「太郎」が表示されるというようにです。 セルA1とコンボボックスをリンクさせ、セルB1にVLOOKUP(A1,一覧,2)で一覧から名前を抽出しました。コンボボックスのChangeイベントでB1の内容をテキストボックスへ送っているのですが、カーソルを別の項目へ移動するまではテキストボックスの内容が更新されません。 コンボボックスのリストを選択した時点でテキストボックスを更新する方法はないでしょうか?

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

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

  • Accessのコンボボックスでリストが選択できない

    いつもお世話になっております、ありがとうございます。 コンボボックス1で部署名を選択し、 コンボボックス2でその部署の社員の名前を選択するようなフォームがあります。 コンボボックス1の値集合ソースで社員テーブルの一覧を参照し、 部署名のフィールドでグループ化して選択できるようになっています。 このとき、なぜかコンボボックス2では最上段にリスト化された社員名しか 選択できなくなります。 画面上では全員がリストとして見えているのに、 リストの2番目以降をクリックしても、一番上の社員しか入力されません。 プロパティで何か変な制約がかかっているのでしょうか? どなたかお分かりになる方がいらっしゃいましたら教えてください。 どうぞよろしくお願いします。

専門家に質問してみよう