|
こんばんわ。返信が遅くなり申し訳ないです。
▼Kein さん:
>何かよく分かりませんね・・。
>ユーザーフォームはいちいち Load しなくても、Showメソッドのみで
>表示できます。
Loadを使ったのは、VBAの参考書を買っているのですが、それに乗っていたのをそのまま引用したため、Loadを使っていました。Keinさんの言われるとおり、Showだけで表示できました。
>>入力表のユーザーフォームを表示したまま、再Loadをし、コンボボックス3にデータを反映
>再Loadなんかしなくても、ComboBox1 と 2 のChangeイベントだけで
>ComboBox3 のリストを変更することが出来るはずです。ただし、すでに現在
>何かのリストがあるとすれば(ListCountで判定可能)、それを Clear してから
>AddItem なりをしないといけません。また、表示に問題があるとするなら
>Repaintメソッド を使って再描画を試みてく下さい。
以下が、現在作成中のものなのですが・・・
業者一覧のシート
A B C D E F G
1番号 コード 業者名 住所 代表 種類1 種類2
2 この欄で抽出条件を設定。
3
4番号 コード 業者名 住所 代表 種類1 種類2
5
・
・
・
503 までが入力欄になります。
510番号 コード 業者名 住所 代表 種類1 種類2
511
・
・
・
1009 までが抽出先の範囲に設定しています。
ユーザーフォム1が案内のメニュー表になっており
コマンドボタン1で入力表を呼び出します。
-----------------------------------------------------------
Private Sub CommandButton1_Click()
案内メニュー.Hide
入力表.Show
End Sub
----------------------------------------------------------
ユーザーフォム2が入力表となっています。
Private Sub UserForm_Initialize()
'これはリスト表示の参照先です。
業者区分1.List = Sheets("基礎データ").Range("X3:X6").Value←で業者一覧のシートの抽出条件を設定します
業者区分2.List = Sheets("基礎データ").Range("Y3:Y6").Value←同じく
指名1.List = Sheets("業者一覧").Range("C511:C1009").Value←で抽出した業者を表示させたいのですが、最初にこの入力表を呼び出したときにある、業者一覧シートの抽出先の業者しか表示しません。
指名2.List = Sheets("業者一覧").Range("C511:C1009").Value
・
・
・
指名89.List = Sheets("業者一覧").Range("C511:C1009").Value
指名90.List = Sheets("業者一覧").Range("C511:C1009").Value
業者区分及び指名はコンボボックスです。
--------------------------------------------------------------------
Private Sub 業者区分1_Change()
Dim rcd As Range
Set rcd = Sheets("業者一覧").Range("F2")
rcd.Value = 業者区分1.Value
Sheets("業者一覧").Select
Range("F2").Select
Range("A4:G503").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"A1:G2"), CopyToRange:=Range("A510:G1009"), Unique:=True
End Sub
-----------------------------------------------------------------------
必要と思われる箇所を抜粋してみました。VBAは初心者なので意味もないことを書いているかもしれませんが・・・
業者区分1のChangeイベントのあとに指名1のコンボボックスを表示させても、反映されておりません。
Keinさんの言われるとおり、何らかのリストがあり、それを Clear してから、AddItemをすれば良いのでしょうか?
|
|