見出し画像

【Day13】文系オタクのエンジニア道~コレクションについて~

こんにちは
安田です

先週末は出展スタッフで学習の時間が取れていなかったですが
また今週からやっていきます!
よろしくおねがいしまぁぁぁぁぁぁす!(Excelポチッ)


コレクションとは

①定義の方法は2つあります

'2行で書くパターン  
Dim cData As Collection
Set cData = New Collection
'もしくは1行でまとめても記載が可能
Dim cData As New Collection

1行で書いたほうがシンプルですね

②コレクションの要素は「add」を使う

    cData.Add 100, "ファントムブラッド"
    cData.Add 200, "戦闘潮流"
    cData.Add 300, "スターダストクルセイダース"

ファントムブラッドには100、戦闘潮流には200
スターダストクルセイダースには300が入っているよ
ということです

③コレクションは更新ができない

はじめに指定した内容から更新がされないということです

cData.Add 100, "ファントムブラッド"
    cData.Add 200, "戦闘潮流"
    cData.Add 300, "スターダストクルセイダース"
    
    'collectionは更新ができない
    cData("ファントムブラッド") = cData("ファントムブラッド") + 200

ファントムブラッドの100に200を足して300にしたいと思っても・・・

更新ができないので、エラーになります
デバッグをすると、上記の一文がエラーと表示されます

④Keyの重複入力はできない

同じコレクションは入力できないことを表しています

cData.Add 100, "ファントムブラッド"はすでに定義されている
エラーとして表示されます

エラーナンバーをもとに
重複しているかを見つけるコードを書きました

エラーコードが0以外の場合
A9に重複していますという文字を表示

⑤コレクションは番号でも取得可能

 Range("A8").Value = cData("ファントムブラッド")
  ↓
Range("A8").Value = cData(1)

同じ結果が得られます

コードのまとめ

'collection
Sub collection_work()
    
    '定義の方法は2つある
    
    'パターン1
    'Dim cData As Collection
    'Set cData = New Collection
    
    'パターン2
    Dim cData As New Collection
    
    'コレクションの要素は「add」を使う
    cData.Add 100, "ファントムブラッド"
    cData.Add 200, "戦闘潮流"
    cData.Add 300, "スターダストクルセイダース"
    
    'collectionは更新ができない
    'cData("ファントムブラッド") = cData("ファントムブラッド") + 200

    Range("A8").Value = cData("ファントムブラッド")
    
    'keyの重複入力はできない
    'cData.Add 100, "ファントムブラッド"
    
    'エラーを見つける
    On Error Resume Next
    cData.Add 100, "ファントムブラッド"
    If Err.Number <> 0 Then
        Range("A9").Value = "重複しています"
    End If
    
    '番号でも取得可能
    'Range("A8").Value = cData(1)

End Sub

コメントが多く見づらいですがご了承くださいませ

コレクションについて学習しました
ルールがあるのと、エラーコードで重複しているかどうかを判断するのは勉強になりました

参考動画

最後まで読んでいただき
ありがとうございます
安田

VBAマスターに俺はなる

マガジンにまとめてありますので
よかったらそちらも御覧ください


この記事が気に入ったらサポートをしてみませんか?