現在、ユーザーフォームを作成していますがコンボボックスでのリスト選択について質問します。
【質問内容】
コンボボックスを3つ作成し、Select Caseでそれぞれのリストを連動させるプログラムを組んでいます。
(1)3つとも選択した後で例えばリスト1を変更しようとするとエラーになってしまいます。リスト以外の文字列も入力できるようにしているつもりですがなぜでしょうか?
(2)選択後、シートセルに転送した後、テキストボックスならば「.Text = ""」で一旦空白になりますが、コンボボックスの場合どうしたらよいのでしょうか?
シートセルに転送後も選択した内容が残ってしまい結局(1)の事象に基づきエラーになってしまい連続入力ができません。
初歩的な質問で恐縮ですが、よろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
コンボボックスの選択肢に RowSourceを使っているのであれば
一度 .RowSource="" といった具合にして選択肢を全て削除してから
新たに範囲を設定してみましょう
Sub ComboBox1_Change()
With ComboBox2
.RowSource = ComboBox1.Text
.ListIndex = -1
.Text = ""
End With
End Sub
といった具合にしてみてはいかがでしょう
今回は RowSourceに設定するデータ範囲の名前と ComboBox1の選択肢が一緒なのでこのようにしました
ComboBox1の選択をやめる(listIndex = -1)とComboBox2の選択肢も全て削除されコンボボックスの表示も消えるようにしています
エラーになってしまうのであればそのエラー内容を投稿しましょう
また エラーになるであろうイベントにブレークポイント設定して
F8キーによるステップ実行を行い 何処でエラーになるのか特定しましょう
ご回答ありがとうございます。
「RowSource = ComboBox1.Text」は、言われたら「そうか!」と思います。本当に勉強になります。
また、ご指導いただいた式で入力後の削除が実現できました。ありがとうございました。
No.1
- 回答日時:
現在お書きになっているコードを公開してみませんか
コンボボックスのどのようなイベントを使って選択肢の変更をなさっているのでしょう
通常ですと Changeイベントだと思いますが ・・・
コンボボックスの選択肢を全て消してしまうならclearメソッドで可能です
未選択の状態にしたいのであれば ListIndexを-1にすれば未選択になります
この回答への補足
早速のご回答ありがとうございます。
Clearメソッドを使用してはみたのですがうまくいきません。
以下に抜粋したコードを記載しておりますのでご教示のほどお願いいたします。
不足がありましたらご指摘ください。
-----------------------------------------------
Private Sub UserForm_Initialize()
With ComboBox1
.Clear
.AddItem "収入"
.AddItem "支出"
.AddItem "貯蓄"
End With
End Sub
------------------------------------------------
Private Sub ComboBox1_Change()
With ComboBox2
.Clear
Select Case ComboBox1.List(ComboBox1.ListIndex)
Case "収入"
.RowSource = "収入"
Case "支出"
.RowSource = "支出"
Case "貯蓄"
.RowSource = "貯蓄"
End Select
End With
End Sub
-------------------------------------------------
Private Sub CommandButton1_Click()
Dim A As Long
A = Range("入力シート").Rows.Count
'Range("入力シート").Rows(A).Insert Shift:=xlDown
Range("入力シート").Cells(A - 1, 1) = TextBox3.Text
Range("入力シート").Cells(A - 1, 2) = ComboBox1
Range("入力シート").Cells(A - 1, 4) = ComboBox2
Range("入力シート").Cells(A - 1, 6) = ComboBox3
Range("入力シート").Cells(A - 1, 8) = TextBox1.Text
Range("入力シート").Cells(A - 1, 9) = TextBox2.Text
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
End Sub
-----------------------------------------------------
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) コンボボックス及びリストボックスを5段階連動させる方法をご存知の方ご教授頂きたいです。 Excelで 3 2022/04/03 21:43
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Excel(エクセル) 【エクセル」 特定のセルで条件抽出した列を、別シートに上から詰めて表示したい。 8 2022/04/08 16:00
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- Excel(エクセル) [オートフィルター]機能について 3 2023/02/04 14:32
- Visual Basic(VBA) ExcelVBA ドロップボックスで月を選択するとそれ以降のデータが残るようにしたい。 3 2022/12/16 14:53
- Excel(エクセル) Excel 値を返す数式についてです 3 2022/11/21 20:08
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル関数を教えてください
-
UserForm1.Showでエラーになり...
-
マクロで"#N/A"のエラー行を削...
-
実行時エラー 438 の解決策をお...
-
お助けください!VBAのファイル...
-
インポート時のエラー「データ...
-
String""から型'Double'への変...
-
VB.net 重複チェックがしたいです
-
エクセルVBA 「On Error GoTo...
-
VBAでfunctionを利用しようとし...
-
「実行時エラー '3167' レコー...
-
ASPで、変数名に、変数を入れら...
-
変数にするとエラーになる理由は?
-
【Access】Excelインポート時に...
-
実行時エラー'-2147467259(8000...
-
Excel vbaについての質問
-
ADO 「認証に失敗しました」
-
マクロの「SaveAs」でエラーが...
-
【VB.NET】 パワポ操作を非表示で
-
ACCESSで値を代入できないとは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
VBAでfunctionを利用しようとし...
-
お助けください!VBAのファイル...
-
文字列内で括弧を使うには
-
実行時エラー 438 の解決策をお...
-
マクロで"#N/A"のエラー行を削...
-
On ErrorでエラーNoが0
-
エクセルVBA 「On Error GoTo...
-
VBA データ(特定値)のある最...
-
実行時エラー'-2147467259(8000...
-
【VBA】ワークブックを開く時に...
-
VBでSQL文のUPDATE構文を使った...
-
ACCESSで値を代入できないとは?
-
マクロの「SaveAs」でエラーが...
-
Excel vbaについての質問
-
インポート時のエラー「データ...
-
Filter関数を用いた結果、何も...
-
「実行時エラー '3167' レコー...
-
バッチファイルで、あるスクリ...
おすすめ情報