[[20200824212847]] 『コンボボックス:直接入力したい場合のエラーにつ』(サクタ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『コンボボックス:直接入力したい場合のエラーについて』(サクタ)

コンボボックスを使用しているのですが、直接入力しようとすると

実行時エラー'381'
Listプロパティの値を取得できません。プロパティの配列のインデックスが無効です。

というエラーが出てきてしまいます。

コンボボックスの関連するであろうプロパティ項目の設定は以下のとおりです。
MatchRequired:False
Style:0-fmStyleDropDownCombo

コンボボックス内には5桁の数字が入るようにしており、B11にその数字を、D10にはその数字に対応する商品名が入るようにしています。

コードは以下のとおりです。

Private Sub ComboBox1_Change()

 Range("B11").Value = ComboBox1.List(ComboBox1.ListIndex, 0)
 Range("D10").Value = ComboBox1.List(ComboBox1.ListIndex, 1)

End Sub

リストにない数字を入れようとすると、1桁数字を入力するごとに上記のエラーが出てきて、毎回「終了」をクリックしています。
(「終了」をクリックすれば、入力した数字はそのまま残ります。)

リストから選択したあと、空白にしたくてコンボボックス内に表示された5桁の数字を削除したときも同じエラーが出てしまいます。

このエラーを表示させない方法はありますでしょうか。
それとも仕様上、しかたないのでしょうか。

教えていただけると助かります。
よろしくお願い致します。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 コマンドボタンを追加して、コンボボックスのチェンジイベントのプログラムを
 コマンドボタンのクリックイベントにいれてはどうでしょうか?

(稲葉) 2020/08/24(月) 22:32


早速お返事いただき、ありがとうございます。
コマンドボタン…、目から鱗でした。

Private Sub CommandButton1_Click()

 Range("B11").Value = ComboBox1.List(ComboBox1.ListIndex, 0)
 Range("D10").Value = ComboBox1.List(ComboBox1.ListIndex, 1)

End Sub

こういうことでしょうか。。。

ですが、すみません。
私の説明が100%よくないのですが、上記設定をしてどう変わったのか分かりかねます;;
このコマンドボタンをどう活用したらいいのかも分かっておりません;;

ちなみに、データが入力(反映)されるセルは異なるのですが、同じようなコンボボックスが同一シート内に複数個存在しております。

(サクタ) 2020/08/24(月) 22:57


 それはそうだよね。
 コンボボックスの白い部分は、単純に1つのテキストボックスだから・・・。
 列なんてないし。

 リストインデックスが、-1だったら、ComboBox1.value とか。
 でも英数字だったら、1文字入力で反応するだろうからどうだろうね?
 後は適当に自分に見合った方法でやってください。
(Why) 2020/08/24(月) 23:29

 いい感じの説明サイト見つけた!
https://www.officepro.jp/excelvbaform/form_combo/index3.html

 ifで条件分岐してください
 てっきり、選ぶ量が多いから、手入力で簡略化するのかと思ってました
(稲葉) 2020/08/25(火) 05:53

Why様、稲葉様、ご返信ありがとうございました。

稲葉様が教えてくださったサイト、時間がとれずまだ検証できていないのですが、
いま改善しようとしている箇所に「値の取得」ができれば煩わしさがなくなると思うので、
早いうちに試してみます!

ご助言いただき、さらに調べてもいただいて、本当にありがとうございました。
またお世話になるかもしれませんが、よろしくお願いします。
(サクタ) 2020/08/26(水) 12:48


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.