Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10 Home : Excel 2016)
複数選択可能なリストボックス
投稿日時: 20/10/15 16:49:53
投稿者: らっぱ90

ワークシートが本シートと担当者シートがあり、本シートのある範囲内のセルを選択すると、リストボックスが表れ、その中から複数選択し、OKボタンをクリックすればその選択した内容がそのセルに書き込まれると
したい。その方法は昔作ったファイルではできていましたが、今は忘れてしまい昔のファイルを手本に作成
しようと、昔のファイルのUserForm1をコピーし、フォルダのある場所に保存しておき、新ファイルの
UserForm1の名前を変えておいてから昔のファイルのUserForm1に置き換えました。リスト範囲は新ファイルも
昔のファイルも同じ担当者シートです。しかし、新ファイルを開き本シートの設定された範囲のセルをクリックしても、リストボックスは表示されません。新ファイルのマクロを表示させ、UserForm1をダブルクリック
すると、リスト自体が空のリストボックスの絵が表示され、リストが認識されていないようです。
昔のファイルのセルの入力規則を見ても何も表示されません。
リストが表示されたリストボックスを表示させ、選択してセルに書き込ませるにはどうしたらよいのでしょうか。

回答
投稿日時: 20/10/15 16:59:11
投稿者: sk

引用:
ワークシートが本シートと担当者シートがあり、
本シートのある範囲内のセルを選択すると、リストボックスが表れ、
その中から複数選択し、OKボタンをクリックすれば
その選択した内容がそのセルに書き込まれるとしたい。

引用:
しかし、新ファイルを開き本シートの設定された範囲のセルを
クリックしても、リストボックスは表示されません。

元々使用されていたブックのブックモジュールや
[本シート]のシートモジュールの内容は確認されたのでしょうか。

投稿日時: 20/10/15 17:30:49
投稿者: らっぱ90

シートモジュールもコピーしました。
具体的には
Private Sub Worksheet_SelectionChage(ByVal Target As Range)以下の
モジュールを同じにしてあります。
ただブックモジュールとはどこに記載があるのでしょうか。

投稿日時: 20/10/15 18:14:02
投稿者: らっぱ90

新ファイルもセルの入力規則の設定もしていないからでしょうか。
リストは担当者シートのA列に書いてありますが、このリストの
セル範囲を指定していないからなのでしょうか。

回答
投稿日時: 20/10/15 18:34:23
投稿者: simple

下記の記事を参考に改めて作成したほうが早いかも知れません。
「リストボックスでの複数選択:Excel VBA入門」
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_userform03b.html

回答
投稿日時: 20/10/16 09:37:04
投稿者: sk

引用:
シートモジュールもコピーしました。
具体的には
Private Sub Worksheet_SelectionChage(ByVal Target As Range)以下の
モジュールを同じにしてあります。

では、上記のステートメントをブレークポイントに設定した上、
[本シート]の選択範囲を変更した際にイベントプロシージャの実行が開始されるか、
プロシージャ内のコード( UserForm1 を開くコードなど)が正常に実行されるか否か
デバッグされることをお奨めします。
 
引用:
ただブックモジュールとはどこに記載があるのでしょうか。

ThisWorkbook という名前のモジュールの記述内容を
確認して下さい。
(シートモジュールのイベントプロシージャを使用されているので、
恐らく何も記述されていないかも知れませんが)
 
引用:
リストは担当者シートのA列に書いてありますが、このリストの
セル範囲を指定していないからなのでしょうか。

VBE 上で UserForm1 のリストボックスを選択し、
プロパティウィンドウより RowSource プロパティの設定値を
確認して下さい。
 
特に何も設定されていない場合は、[本シート]のシートモジュール、
UserForm1 のフォームモジュール、標準モジュールのいずれかから、
そのリストボックスの初期化を行なうコードが記述されている箇所を
探してみて下さい。

回答
投稿日時: 20/10/17 10:13:18
投稿者: simple

Private Sub Worksheet_SelectionChage(ByVal Target As Range)

UserForm内のプロシージャ
を提示してもらうことはできますか?

回答
投稿日時: 20/10/17 11:55:13
投稿者: mattuwan44

 >昔のファイルのセルの入力規則を見ても何も表示されません。
 
入力規則のリストの機能に代わるものを、
ユーザーフォームを使って自作しようとされているのですよね?
ならば、入力規則について考える必要はありません。
 
ユーザーファームを作ることに注力しましょう。
 
で、
 >シートのある範囲内のセルを選択すると、リストボックスが表れ
 
セルの選択を変更したときに、マクロを起動して、ユーザーフォームを表示したいのですよね?
ならば、
 
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_event.html#selectionchange
 
ここを参考にしてみてはいかがでしょうか?
ユーザーフォームの表示は↓
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_userform.html
 
これの合わせ技で行けると思いますよ。
 
リストボックスについてはまた、リストボックスで調べてみてください。

トピックに返信