新しいアカウントで始めました。

身の回りの出来事や写真が中心です。

Excel、dictionaryを使った連想記憶。その3。

2015-12-03 17:09:09 | Excel

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へ書きます。


この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 忘年会ね? | トップ | クリスマスケーキですか? »
最新の画像もっと見る

Excel」カテゴリの最新記事