【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の重複入力はできない
同じコレクションは入力できないことを表しています
エラーナンバーをもとに
重複しているかを見つけるコードを書きました
エラーコードが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マスターに俺はなる」
マガジンにまとめてありますので
よかったらそちらも御覧ください
この記事が気に入ったらサポートをしてみませんか?