VBAのフォーム画面にコンボボックスを設置しました。
ユーザーフォーム:UserForm1
データ:datasheet
A列:No.
B列:製品名
C列:サイズ
D列:数量
画面上にコンボボックス1,2,3があり、入力リストをdatasheetから表示します。
コンボボックス2は、コンボボックス1で選択されたものに対応するデータだけが選択可能です。
コンボボックス3は、コンボボックス1、2で選択されたものに対応するデータだけが選択可能です。
<実現したいこと、知りたいこと>
VBA ユーザーフォームのコンボボックスはひらがな、漢字、ローマ字は問題なかったのですが、下記C列とD列リストが表示されませんでした。
以下のことを実行するにはどのように記述すればよろしいでしょうか?
①datasheetC列は半角小数点
②datasheetD列は半角数字、マイナス(-20,-50など)もある。
よろしければ、ご教授いただきたく、よろしくお願いいたします。
VBA
1Private Sub ComboBox2_Change() 2 3Dim MyData3 As New Collection 4Dim cnt3 As Long 5Dim i3 As Long 6 7 8cnt3 = Sheets("datasheet").Range("A1").CurrentRegion.Rows.Count 9 10製品名 = ComboBox1.Text 11サイズ = ComboBox2.Text 12 13ComboBox3.Clear 14 15 On Error Resume Next 16 For i3 = 2 To cnt3 17 18 If Sheets("datasheet").Range("B" & i3).Value = 製品名 Then 19 20 If Sheets("datasheet").Range("C" & i3).Value = サイズ Then 21 MyData3.Add Sheets("datasheet").Range("D" & i3).Value, Sheets("datasheet").Range("D" & i3).Value 22 End If 23 End If 24 25 Next i3 26 On Error GoTo 0 27 28 For i3 = 1 To MyData3.Count 29 30 ComboBox3.AddItem MyData3(i3) 31 Next 32 33 34End Sub 35Private Sub ComboBox1_Change() 36Dim MyData2 As New Collection 37Dim cnt2 As Long 38Dim i2 As Long 39 40 41cnt2 = Sheets("datasheet").Range("A1").CurrentRegion.Rows.Count 42 43製品名 = ComboBox1.Text 44 45ComboBox2.Clear 46 47 '■重複しない製品名のリストを作成 48 On Error Resume Next 49 For i2 = 2 To cnt2 50 51 If Sheets("datasheet").Range("B" & i2).Value = 製品名 Then 52 53 MyData2.Add Sheets("datasheet").Range("C" & i2).Value, Sheets("datasheet").Range("C" & i2).Value 54 End If 55 56 Next i2 57 On Error GoTo 0 58 59 '■製品名のリストを作成 60 61 For i2 = 1 To MyData2.Count 62 63 ComboBox2.AddItem MyData2(i2) 64 Next 65 66 67End Sub 68 69Private Sub UserForm_Initialize() 70Dim MyData1 As New Collection 71 72Dim cnt As Long 73Dim i As Long 74 75 cnt = Sheets("datasheet").Range("A1").CurrentRegion.Rows.Count 76 77 '■重複しない製品名のリストを作成 78 On Error Resume Next 79 For i = 2 To cnt 80 81 MyData1.Add Sheets("datasheet").Range("B" & i).Value, Sheets("datasheet").Range("B" & i).Value 82 83 Next i 84 On Error GoTo 0 85 86 '■製品名のリストを作成 87 88 For i = 1 To MyData1.Count 89 90 ComboBox1.AddItem MyData1(i) 91 Next 92 93End Sub 94
回答2件
あなたの回答
tips
プレビュー