• ベストアンサー

コンボボックスのリスト表示について

ユーザーフォーム上でコンボボックスを作成しました。 リストの元となるデータがあるセル範囲に名前を付け、 コンボボックスのRowSourceにその名前を入れてリストにしています。 リストを変更するときにはデータを作り変え、マクロでそのセル範囲に名前を付け替えるようにしています。 問題は前のリストの数が3つだったとし、次にリストの数を5つになるように作り変えた時にコンボボックスの表示が上3つまでしか表示されないのです。 リストのスクロールもできない状態です。 Visual Basicの画面でコンボボックスをいじったら直っています。 名前のセル範囲、データの変更はきちんと反映しています。 List Rows等のプロパティをいじってみても直りません。 どこを設定しなおせばいいのでしょうか。OSはMe、Excel2000です。

質問者が選んだベストアンサー

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

ソースが無いと良く判らないです。 UserForm に CommandButton と ComboBox をおいて下記にようにしてみましたが、問題無く表示されます。(Excel97ですが。。) 意味が違いますか? '標準モジュールここから********************************************* Sub FrmShow()  UserForm1.Show End Sub '標準モジュールここまで********************************************* 'UserFormのモジュールここから*************************************** Private Sub CommandButton1_Click()  Call Test  ComboBox1.RowSource = "myList" End Sub '***適当に範囲を作り名前を付ける*** Sub Test() Dim LRow As Integer, myR As String Randomize LRow = Int((30 - 5 + 1) * Rnd + 5) With ThisWorkbook.Worksheets(1) On Error Resume Next  ThisWorkbook.Names("myList").Delete  .Columns(1).Clear   For i = 1 To LRow     .Range("A" & i) = i   Next i  myR = "=" & .Name & "!" & .Range("A1:A" & LRow).Address  ThisWorkbook.Names.Add Name:="myList", RefersTo:=myR End With End Sub 'UserFormのモジュールここまで***************************************

nihonjinn
質問者

お礼

回答ありがとうございました。 フォームを閉じる時にUserForm1.hideでやっていたのが大間違いでした。 Unload でしたらちゃんと初期化されてうまくいきました。 リストの設定方法も参考になりました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.1

VBやアクセスVBAではなく、Excel2000の問題ですよね。 私は直接シートにコンボボックスを良く貼りつけるのですが、その時には貼りつけて、右クリックで出てくるウインドウでプロパティをクリックし、そのなかのListFillRangeをA1:A5のように設定してますが、これではダメですか。VBAコード内でも使えるはずです。E2000です。 そこにはRowSourceなど出てこないのですが。

nihonjinn
質問者

お礼

回答ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A