Option Explicit
Private Sub CommandButton1_Click()
TextBox1.Text = ""
End Sub
Private Sub UserForm_Click()
End Sub
Private Sub UserForm_Initialize()
Me.StartUpPosition = 0
Me.Left = 200
Me.Top = 200
Me.Height = 250
Me.Width = 300
End Sub
以上はuserform1のコードで書き込みます。
Option Base 1
Option Explicit
Sub ディクショナリ試験()
Dim arry As Variant
Dim gyou As Long
Dim i As Long
Dim mydic As Object
Dim namae As Variant
UserForm1.Show vbModeless
Set mydic = CreateObject("Scripting.Dictionary")
With Worksheets("Sheet1")
arry = .Range(Cells(1, 1), Cells(Rows.Count, 2).End(xlUp))
End With
gyou = UBound(arry, 1)
For i = 1 To gyou
If Not mydic.exists(arry(i, 1)) Then '配列から辞書を作ります。
mydic.Add arry(i, 1), arry(i, 2)
Else
mydic(arry(i, 1)) = mydic(arry(i, 1)) + arry(i, 2) 'なんでこれなんだ?
End If 'B列が数字とした場合
Next
Do
namae = InputBox("品名")
If namae = "終わり" Then
Exit Do
End If
UserForm1.TextBox1.Text = UserForm1.TextBox1.Text & namae & " " '品名を入力して
UserForm1.TextBox1.Text = UserForm1.TextBox1.Text & mydic.Item(namae) & vbCrLf '品名に応じた数字が表示できる
Loop 'Gotoはない方がスッキリします
Set mydic = Nothing
End Sub
以上はModule1に書き込みます。ユーザーフォームへ出力を表示するようにします。
一番理解出来づらいのが同じ品名の数を合計するところですかユーザーフォームは
vbModelessで表示です。また表示する位置はuserform_initializeへ書きます。