エクセルマクロ オンライン講座コメント紹介

コメント紹介
   └ エクセルマクロ・VBA発展編2
       └ 連想配列3-Microsoft Scripting Runtimeのへの参照設定

連想配列3-Microsoft Scripting Runtimeのへの参照設定

[11095] 2019-02-09 23:05:58 牧野千秋さんからの投稿です。

1つめ
Dim LIST As Scripting.Dictionary
Set LIST = CreateObject("Scripting.Dictionary")

このとき、"Scripting.Dictionary"に""がつくのはなぜ?
当然小文字で入力しても大文字にならない

2つめ
テキスト通りに書いたのですが
dic.Item(KEY) = dic.Item(KEY) + 1
で型が一致しません、と出ます。
ここは「すでにキーにあるから、配列を1段下げるよ」という意味ではないのでしょうか。

Sub ディクショナリ()
    Dim dic As Scripting.Dictionary
    Set dic = CreateObject("Scripting.Dictionary")
    
    Dim MR As Long
    Dim i As Long
    Dim KEY As String
    Dim NAM As String
    
    MR = Sheets("基礎データ").Range("A" & Rows.Count).Row
        For i = 2 To MR
            KEY = Sheets("基礎データ").Range("A" & i).Value
            NAM = Sheets("基礎データ").Range("B" & i).Value
            
            If dic.Exists(KEY) Then
                dic.Item(KEY) = dic.Item(KEY) + 1
            Else
                dic.Add (KEY), (NAM)
            End If
        Next
    
    Dim VKEYS As Variant
    VKEYS = dic.Keys
        For i = LBound(VKEYS) To UBound(VKEYS)
            Sheets("出力").Range("A1").Offset(i).Value = VKEYS(i)
            Sheets("出力").Range("B1").Offset(i).Value = VKEYS(i)
        Next
    
End Sub

 


[11105] 2019-02-09 23:36:10 小川慶一さんからの投稿です。

牧野千秋さん:

「1つめ」について:

> 当然小文字で入力しても大文字にならない

ダブルクオートでくくった範囲は文字列だからです。

> このとき、"Scripting.Dictionary"に""がつくのはなぜ?

CreateObject 関数は、引数に、「Class As String」ということで、参照するクラスの名称を文字列型で指定するという仕様だからです。

ref: msdn「CreateObject 関数」
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/createobject-function?f1url=https%3A%2F%2Fmsdn.microsoft.com%2Fquery%2Fdev11.query%3FappId%3DDev11IDEF1%26l%3Dja-JP%26k%3Dk(vblr6.chm1010851)%3Bk(TargetFrameworkMoniker-Office.Version%3Dv16)%26rd%3Dtrue%26f%3D255%26MSPPError%3D-2147217396

「2つめ」については、追って回答しますね。

 


まずはここから!スマホでも学べる無料動画講座

今なら先着30名限定で無料!定価4,800円の、初心者のためのエクセルマクロ動画講座。
  1. Excel 97~Excel 2016まですべて対応。動画本数20本、総再生時間2時間44分53秒
  2. PC, Mac, iPhone, iPad, Androidのお好みの環境で、いつでも好きなときに学べます。
2004年から10年間述べ3,000名以上に実施した研修の経験と実績を集約した講座です。
いますぐ無料で試してください。

トップへ