「scripting.dictionary vba 個数カウント」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
ScriptingライブラリのDictionaryオブジェクトで、要素・項目の個数をカウントするには、VBA(Visual Basic for Applications)でどのようなコードを書けばいいのか、探している方による検索でしょう。
Dictionary.Countプロパティで個数を取得
「scripting.dictionary vba 個数カウント」
という検索キーワードからは、ループを回しながらカウントするようなニュアンスが感じられますが、その必要はありません。
DictionaryオブジェクトのCountプロパティを使えば、
Dictionaryに登録されている、要素・項目の数を取得できます。
Dictionary.Countを使ったサンプルマクロ
簡単なExcelマクロをご紹介しておきます。
アクティブなワークシートのA列に、Dictionaryオブジェクトに登録したいデータを適当に入力してから、以下のマクロを実行してください。
A列に入力されている値の、ダブりのない個数がメッセージボックスに表示されます。
Dim dic As Object ' Scripting.Dictionary
Dim i As Long
Set dic = CreateObject("Scripting.Dictionary")
' A列のデータをDictionaryに登録
For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
If Not dic.Exists(Cells(i, "A").Value) Then
dic.Add Key:=Cells(i, "A").Value, Item:= Cells(i, "A").Value
End If
Next i
MsgBox dic.Count
Set dic = Nothing
サンプルマクロの解説
カウント・個数を取得しているのは、最後のほうに存在する、
MsgBox dic.Count
の部分です。
その前は、Dictionaryに項目を追加する処理です。
DictionaryオブジェクトをCreateObjectしておいてから、
Set dic = CreateObject("Scripting.Dictionary")
A列の1行目から、データの入力されている最終行まで、For~Nextループを回して、
For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
既に登録されていないかどうかを、Dictionary.Existsメソッドを使って調べて、
もし登録されていなければ、
If Not dic.Exists(Cells(i, "A").Value) Then
Dictionary.Addメソッドで、
登録を行っています。
dic.Add Key:=Cells(i, "A").Value, Item:= Cells(i, "A").Value
このサンプルでは、KeyにもItemにもA列に入力されている値を指定しています。
ループを抜けたら、Dictionary.Countプロパティで取得した個数を、メッセージボックスに表示しています。
MsgBox dic.Count
- Newer:VBAからIFERROR関数を入力する
- Older:Access VBAでADOを使って全レコードを取得する
Home » Dictionaryオブジェクトの使い方 » Dictionaryのカウント・個数を取得するExcelマクロ