ExcelのVBAについて質問です。
画像のフォーム「品番コード」に入力した
値によって、コンボボックスのリストを動的に変更したいのですが、
式がわかりません。
画像の例だと、
品番コードに「AAAA」を入力した際、
コンボボックスのリストに、
カラー⇒1、71、75
サイズ⇒1、2
で表示させたいです。
品番コードのtextbox⇒PrdId
コンボボックスカラー⇒cmbCL
コンボボックスサイズ⇒cmbSZ
考え方でもよいので、ご教示いただけますでしょうか。
ーーーーーーーーーーーーーーーーーーーー
Private Sub PrdID_Change()
On Error GoTo vlookError
Dim MaxRow As Integer
MaxRow = Worksheets("SKUマスタ").Cells(Rows.Count, 1).End(xlUp).Row
Deliv.Value = WorksheetFunction.VLookup("IM03" & PrdId.Value, Worksheets("SKUマスタ").Range("A2:G" & MaxRow), 7, False)
PrdName.Value = _
WorksheetFunction.VLookup("IM03" & PrdId.Value, Worksheets("SKUマスタ").Range("A2:G" & MaxRow), 2, False)
cmbCL.AddItem
Price.Value = _
WorksheetFunction.VLookup("IM03" & PrdId.Value, Worksheets("SKUマスタ").Range("A2:G" & MaxRow), 4, False)
Exit Sub
vlookError:
Deliv.Value = ""
PrdName.Value = ""
Price.Value = ""
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
VBAがすごく久しぶりなので間違っていたら申し訳ないです.
(そして定義はちょっと考えてないのでそこだけ変えてください)
Private Sub TextBox1_Change()
If TextBox1.Value = "AAAA" Then
ComboBox1.AddItem "1"
ComboBox1.AddItem "2"
ComboBox2.AddItem "1"
ComboBox2.AddItem "71"
ComboBox2.AddItem "75"
Else
ComboBox1.clear
ComboBox2.clear
Exit Sub
End If
End Sub
でどうでしょうか?AAAAと,大文字もあっていないとコンボボックスの値はクリアされるはずです.そうしたくなければComboBox1.clearとComboBox2.clearの部分は抜いてください
(ただ,そうするとコンボボックスにいろいろ値が残るので,以下のようにコードを変える必要があるかもわかりません.最初から記述してあります)
Private Sub TextBox1_Change()
ComboBox1.clear
ComboBox2.clear
If TextBox1.Value = "AAAA" Then
with combobox1
.AddItem "1"
.AddItem "2"
end with
with ComboBox2
ComboBox2.AddItem "1"
ComboBox2.AddItem "71"
ComboBox2.AddItem "75"
end with
Else
Exit Sub
End If
End Sub
要はクリア処理が必要になるだろう,ということです.
あとよく見れてないので間違っていたら申し訳ないのですがエクセルにもうリストが入っているようでしたら,
lastRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
Dim c as range
For Each c In Range("A1:lastrow,1")
If InStr(c.Value, textbox1.text ) > 0 Then
(ここまででテキストボックスに入力された値がA1からA列の最後の行に入っているかを確認しています.>0というのは,もし入っていたらという意味で使っています)
として,このあとcのセル番号を取得し,その何列右にあるものをコンボボックスにAddItemする,とできるはずです.
No.1
- 回答日時:
事前に与えたい値を『名前の定義』でセル範囲を指定しておいた表を作成しておいて、
.RowSource = "名前"
により必要に応じて切り替えるとか?(検証も出来ない初級者ゆえ違っていたらごめんなさい)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Excel(エクセル) vba userformで漢字を全角カタカナに 2 2022/07/24 15:38
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Excel(エクセル) VBA でvlookup エラーなどは削除したい 8 2022/12/30 04:03
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
二点の座標から距離や角度を求...
-
VBAにおけるニュートン法
-
一行飛ばしで合計
-
Functionの戻り値を配列にした...
-
チェックボックスを操作できな...
-
C言語のサフィックスについて
-
VBA public変数はどのようなこ...
-
C#のループでtextboxに値を入れ...
-
他のフォームから別のフォーム...
-
マクロ 条件式
-
【VB6.0】 あるフォームから他...
-
リストビューの列ヘッダーの幅...
-
【VBScript】変数のスコープ
-
VB.NETでのイベントの途中終了
-
verilogのcase文
-
アクセスできない保護レベルエ...
-
VBAでcallで呼び出したsubを終...
-
SavePictureで保存できない
-
ボールが壁に当たって跳ね返る...
-
VB
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル・VBAでテキストボック...
-
二点の座標から距離や角度を求...
-
VB.NET)コンボボックスの連動に...
-
VC++ (byte)(col & 0xFF) の意味
-
複数条件のオートフィルタ(VBA)
-
検索結果の指定列をリストボッ...
-
線の太さ
-
テキストファイルの読み込みと...
-
VBAにおけるニュートン法
-
2次元配列を返す関数について
-
for文の質問です。
-
4変数の非線形方程式のときかた
-
エクセル ユーザーフォーム ...
-
ドラゴン曲線を再帰で書く
-
VC++2010 大きい桁数をBYTE型配...
-
sublimit textっていうエディタ...
-
エクセルVBAでテキストボッ...
-
VBA public変数はどのようなこ...
-
VBAでcallで呼び出したsubを終...
-
他のフォームから別のフォーム...
おすすめ情報