前提・実現したいこと
Excelで、コンボボックス(フォームコントロール)を使い、同一ブック内の別のシートにあるA列のデータをリスト表示させたい。
ただし、A列のデータは可変するため、空白セルを除いてリスト化したい。
下記の試したことに書いてますが、名前の定義を活用して作成しようしています。しかし、上記が実現できるのであれば、VBAで記述する方法でも問題ありません。
お手数かけますが、ご回答よろしくお願いします。
試したこと
可変するデータに対応するために、名前の定義で参照範囲にOFFSET関数を使用して、空白セルを除いて参照できるようにした。
続いて、コンボボックスのコントロールの書式設定のコントロールタブの入力範囲に、上で作成した名前を記述したが、エラー「参照が正しくありません。」が発生した。
補足情報(FW/ツールのバージョンなど)
Excel 2016
名前の定義で範囲を動的にすることができているのでしたら、現状何が出来ていないのでしょうか?
セルの入力定義のリストへ、定義した名前を指定すれば、データに応じて可変することが確認できたのですが、やりたいことは、コンボボックス(フォームコントロール)で動的に変化する値のリストを表示させることです。
製造履歴をコピーしたときに、履歴によって型名が1から50種類ぐらいに可変する、数件しかない場合に、空白行が目立ち見栄えが悪くなることからリストを可変させたく思っています。
尚、コンボボックス(フォームコントロール)への名前の設定は、コントロールの書式設定のコントロールタブの入力範囲に入力しようとしていますが、入力すると名前で指定できたないため、別の手段で実現させる方法がないか教えて頂きたく思ってます。
解決策がわかりましたら、ご教示いただきたく、よろしくお願いします。
例えばA列を名前の定義で「ComboItems」と定義しておくとします。コンボボックスの書式設定を開いて「入力範囲」に「ComboItems」と入れれば名前の定義で設定した範囲でアイテムとして出てきますが、それではダメということでしょうか?
ttyp03さんにコメントいただき、再確認したところttyp03さん同様に問題なくできたため、エラー原因を調査したところ私のミスということが判明しました。
原因は、名前の定義で参照先に指定したOFFSET関数の結果がエラーになる場合(※)があり、エラーしているときにコンボボックス(フォームコントロール)で名前を指定すると「参照が正しくありません。」という結果になっていました。お恥ずかしい結果ですが、おかげさまで解決することができました。ありがとうございました。
※エラーになる場合
A列を参照先にしていましたが、下記関数としていた為、A列のタイトルをカウントから外すためOFFSETの高さを-1していました。しかし、A2以降のデータがないとき高さが0になってしまい、OFFSET関数がエラーを返していました。A2列以降にデータが入っていればコンボボックス(フォームコントロール)で名前を指定してもエラーになりませんでした。
【修正前】=OFFSET(Sheet1!$A$2,0,0,COUNTA(Sheet1!$A:$A)-1,1)
【修正後】=OFFSET(Sheet1!$A$2,0,0,COUNTA(Sheet1!$A:$A),1) ・・・ -1を削除
回答2件
あなたの回答
tips
プレビュー