|
ichinoseさん、jakaさん、Blueさん こんばんわ。
お返事ありがとうございました。また、返事が遅くなりすみません。
いろいろとご指摘ありがとうございます。
また、言葉足らずで大変申し訳ないです。
さて、問題の強制終了ですが、ここ1ヶ月程、ノイローゼになりそうなぐらい悩んでましたが、今日、すっきりと解決(たぶん)しました。今夜はゆっくり眠れそうです。
大体が、この入力表を表示させたあと、閉じて、保存して、再度ファイルを開いて入力表を表示させようとすると強制終了していました。
ただ、他の操作をして、この入力表を表示させるとうまくいくので、原因がいまいち特定できずにいました。
解決の方法なのですが・・・
以前のコードですと、リスト表示を↓のとおり書いておりました。
Private sub UserForm_Initialize()
コンボボックス1.List = Sheets("シート").Range("A1:A10").Value
End sub
としていたのを、今日↓のように変えてみたところうまくいきました。
Private sub UserForm_Initialize()
入力表(ユーザーフォーム).Controls("コンボボックス1").Value = Sheets("シート").Range("A1:A10").Value
End sub
このユーザーフォームの仕様で、ユーザーフォームの中にマルチページを配置しています。マルチページを5ページ配置し、その中にコンボ・テキストボックスを150程配置していました。
この入力表のユーザーフォームを別のユーザーフォームのコマンドボタンから表示させるようにしていました。
入力表のコンボボックスには、シート1のA列から仮にZ列までの各列の2行目から10行目までのデータを反映することとします。
このような感じで、私の条件と似たようなことができると思います。
入力表を呼び出すユーザーフォームをコマンドボタンをそれぞれ、ユーザーフォーム1とコマンドボタン1とします。
入力表のほうのユーザーフォームをユーザーフォーム2とします。
ユーザーフォーム1のコマンドボタン1のイベント
Private sub コマンドボタン1_Click()
ユーザーフォーム1.Hide
ユーザーフォーム2.Show
End sub
ユーザーフォーム2のInitializeイベント
Private sub UserForm_Initialize()
コマンドボックス1.List = Sheets("シート1").Range("A2:A10").Value
コマンドボックス2.List = Sheets("シート1").Range("B2:B10").Value
とコンボボックスが27個とZ列までのデータ範囲を順次書いてみてください。
End sub
これで、似たような条件が完成すると思うのですが・・・
これで、入力表のユーザーフォーム2を表示させようとすると、エクセルが強制終了していました。
これを、上記で書いたように次のようにすると・・・
ユーザーフォーム2のInitializeイベント
Private sub UserForm_Initialize()
ユーザーフォーム2.Controls("コマンドボックス1").List = Sheets("シート1").Range("A2:A10").Value
ユーザーフォーム2.Controls("コマンドボックス2").List = Sheets("シート1").Range("B2:B10").Value
とコンボボックスが27個とZ列までのデータ範囲を順次書いてみてください。
End sub
そうすると、強制終了が今のところはなくなりました。
もし、強制終了しなかったら、ごめんなさい。何かが足りないか、他の原因なのかも知れないということですよね。
最後になりましたが、いろいろとご親切にありがとうございました。
|
|