プロが教えるわが家の防犯対策術!

ユーザーフォーム上でコンボボックスを作成しました。
リストの元となるデータがあるセル範囲に名前を付け、
コンボボックスのRowSourceにその名前を入れてリストにしています。
リストを変更するときにはデータを作り変え、マクロでそのセル範囲に名前を付け替えるようにしています。

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

A 回答 (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のモジュールここまで***************************************
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/09/29 01:21

VBやアクセスVBAではなく、Excel2000の問題ですよね。


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

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

お礼日時:2003/09/29 01:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!