プロが教える店舗&オフィスのセキュリティ対策術

エクセルVBAで以下のような方法でコンボボックスのリストを更新しようとしています。

参照セルの値が変わった場合に、コンボボックスのリストを削除して、新たな値をリストとして取り込みたいと思って、以下のようなコードを実行しましたが、
削除はできても、リストの追加時に"書き込みできません"というエラーが出てしまいます。

下記ロジックにかかわらず、「コンボボックスのリストを一旦クリアして、再度追加する」方法をアドバイス願います。


For i = 1 To 10
ComboBox2.RemoveItem (0)
Next

For j = 1 To 10
ComboBox2.AddItem Worksheets("Tool").Cells(j, 2).Value
Next

A 回答 (4件)

Clear、AddItemなどしなくても、Bのコードを後出することで、AからBにきり変えられませんか。

VB的発想からエクセルVBA発想に切りかえる。一応テストではそのようになりました。
Sub test01()
Worksheets("sheet1").ComboBox1.ListFillRange = "a1:a8" 'A

' Worksheets("sheet1").ComboBox1.ListFillRange = "b1:b5" 'B
End Sub

この回答への補足

ご回答、ありがとうございます。
ちょっと、試してみます。

補足日時:2004/08/04 17:41
    • good
    • 0

#2の方が書かれてますが、


ComboBox2.Clear
で削除できました。
追加はtonkatsuさんが書かれてるコードで追加できました。

この回答への補足

皆様、ご回答ありがとうございます。
.clearを使うと、リストだけで無く、コンボボックスのテキストまでも消されてしまうのですよね。
それだと、都合が悪くて、どうしたものかと悩んでます。

補足日時:2004/08/04 17:37
    • good
    • 0

そのコードは、何処に記述しているのですか?


ユーザーフォームの名前を指定していないということは、同じフォームの何かの
イベントプロシージャに記述しているように思いますが、それでしたら、
そのコードで動作します。
ただ、削除するのは、こんな感じでいいかと思います。

Private Sub CommandButton1_Click()
Dim j As Integer
Me.ComboBox2.Clear
For j = 1 To 10
  Me.ComboBox2.AddItem Worksheets("Tool").Cells(j, 2).Value
Next
End Sub
    • good
    • 0

コンボボックスはフォームに付いてるのですか?


それともシート?
セルの値は、プログラムから変更するのですか?

この回答への補足

コンボボックスはフォームに付いています。
セルの値はプログラムから変更しています。
同一プロシージャ内で上記のようなリストの削除と追加は行えないのでしょうか。

補足日時:2004/08/04 10:54
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A