
ExcelのVBAでの、すごく初歩的な質問です。Comboboxに読み込まれるリストがシートのA1:A10にあります。ところどころ空白なので、ComboboxのDropDownListにも空白が出でます。この空白を消すために次のようなコードを書いて実行しますがいろいろやってもエラーになってしまいます。どうもRemoveItemのあたりがおかしいようなのですが、どうすればいいのでしょうか?よろしくおねがいします。
ComboBox1.RowSource = "A1:A10"
I = ComboBox1.ListCount - 1
For n = I To 0 Step -1
If ComboBox1.List(n) = "" Then
ComboBox1.RemoveItem (n)
End If
Next
No.2
- 回答日時:
下記はワークシートに直接コンボボックスを貼りつけています。
UserFormには貼りつけていません。後者だと結論は別になるかも知れないと思います。
(1)まず周辺から。ComboBox1.RowSource = "A1:A10" について。
これは実際には、どの様にコーディングされましたか。上のままではエラー
になると思いますが。
(A)Worksheets("sheet1").ComboBox1.RowSource = Range("a1: a10")もダメでした(このメソッドをサポートしていません。)
(B)私はいつもListFillRangeにA1:A10と入れています。
(C)Worksheets("sheet1").ComboBox1.RemoveAllItemsもエラーになりました(このメソッドをサポートしていません。)
(D)ある本に「コンボボックスコントロールにワークシートのデータが設定されている場合は、Additemメソッドが利用できませんとあります。ListFillRangeを使った場合か。
(E)項目の追加の別方法について
Sub test03()
For i = 1 To 10
Worksheets("sheet1").ComboBox1.AddItem Cells(i, 1)
Next i
End Sub
もダメでした。
(2)項目削除について
4点注意点・心配な点があります。
(A)ListIndexは0から始まるが、Forループはi=1から始めやすい。
(B)RemoveItem n のn は第n番目の項目である。ListIndexと1ずれる。
(C)1つ削除するとループの終わりが1つ手前にずれる。
(D)1つ削除すると次ぎの削除するListIndexは同じListIndex番号に
なる。
Sub test01()
For i = 0 To 9
Worksheets("sheet1").ListBox1.AddItem Worksheets("sheet1").Cells(i + 1, 1)
Next i
i = Worksheets("sheet1").ComboBox1.ListCount
' MsgBox i
p = 0
For n = 0 To i - 1
' MsgBox Worksheets("sheet1").ComboBox1.List(n)
If Worksheets("sheet1").ComboBox1.List(n) = "" Then
' MsgBox n
MsgBox p
Worksheets("sheet1").ComboBox1.RemoveItem p
i = i - 1
Else
p = p + 1
End If
Next
End Sub
でやりましたがダメでした。
(3)VB6.0で
Private Sub Form_Load()
l = Array("a", "b", " ", "c", "d", _
"e", " ", "f", "g", " ")
For i = 0 To 9
Form1.Combo1.AddItem l(i)
Next i
i = Form1.Combo1.ListCount
For n = 0 To i - 1
MsgBox n
If Form1.Combo1.List(n) = " " Then
Form1.Combo1.RemoveItem n
Else
End If
Next
End Sub
で上手く行くようです。
「内容なし項目」はスペース1字に変えています。
この場合、(2)の(C)と(D)は考えなくて良いことが判りました。
(4)エクセルVBAで
Sub test01()
l = Array("a", "b", " ", "c", "d", _
"e", " ", "f", "g", " ")
For i = 0 To 9
Worksheets("sheet1").ComboBox1.AddItem l(i)
Next i
i = Worksheets("sheet1").ComboBox1.ListCount
MsgBox i
For n = 0 To i - 1
MsgBox n
If Worksheets("sheet1").ComboBox1.List(n) = " " Then
Worksheets("sheet1").ComboBox1.RemoveItem n
Else
End If
Next
End Sub
は上手く行きます。
Worksheets("sheet1").ComboBox1.RemoveAllItemsはエラーになります(
このメソッドをサポートしていません。)
テストで何度も実行すると、項目が累積しますので注意。
結論として、エクセルVBAでワークシート上にコンボボックスを貼りつけると、RemoveIten が使えないのではないでしょうか。
であれば、ListFillRangやDatasourceを使わず、シートのセルA1:A10から自分で、空白分は除いて、、AddItemでセットすることになるでしょう。
どうも沢山情報をありがとうございます。当方がやってみたのは、UserForm上にComboBoxを張るつける方です。これだと、ComboBox1.RowSource = "A1:A10"はうまくいきました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- その他(ギャンブル) BOって何歳でも始めれるんですか?当たる確率的には競馬より全然高い50%とかなんですか? 2 2022/09/06 15:13
- Excel(エクセル) Vba エクセルマクロで、 A列の、A1セルからA10セルに空白のある行を削除する、のは Range 3 2022/11/05 17:44
- Visual Basic(VBA) 【VBA】Excelで罫線を引きたい 3 2022/07/14 12:04
- Visual Basic(VBA) エクセル マクロ(A1:A10)までの中で一番多く出た数字をB10に表示 6 2023/04/25 17:01
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Visual Basic(VBA) 実行時エラー´5854´ 文字列型パラメーターが長すぎます。 3 2023/06/08 21:17
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの表示形式を保ったま...
-
Excel VBAのComboboxのRemoveItem
-
excelのマクロでrangeの選択が...
-
EXCELで2つの数値のうち大きい...
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
Excelで隣のセルと同じ内容に列...
-
エクセルでオートフィルタのボ...
-
エクセルで特定の文字が入って...
-
エクセルで、2種類のデータを...
-
エクセルのオートフィルタで最...
-
エクセルで時刻(8:00~20:00)...
-
エクセル 文字数 多い順 並...
-
2つのエクセルのデータを同じよ...
-
EXCELで 一桁の数値を二桁に
-
文字列に数字を含むセルを調べたい
-
Excelで半角の文字を含むセルを...
-
エクセル(勝手に太字になる)
-
エクセルで文字が混じった数字...
-
SUMIFとCOUNTIFを合わせたよう...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの表示形式を保ったま...
-
excelのマクロでrangeの選択が...
-
エクセル 1つのセル毎に入力...
-
Excel VBAのComboboxのRemoveItem
-
EXCEL 行内のデータを2行に分け...
-
Excel VBA For Each Next構文...
-
EXCELのマクロで一覧表に...
-
エクセルの関数(IF関数?)に...
-
VBA:値をシート間で転記する方法
-
EXCELで2つの数値のうち大きい...
-
Excelで隣のセルと同じ内容に列...
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルでオートフィルタのボ...
-
エクセルで特定の文字が入って...
-
エクセルで、2種類のデータを...
-
エクセルのオートフィルタで最...
-
Excelで半角の文字を含むセルを...
-
2つのエクセルのデータを同じよ...
-
エクセルで時刻(8:00~20:00)...
おすすめ情報