[VBA] ディクショナリに属性を持たせコードの可読性を高める(クラスライブラリの活用)

ディクショナリに格納できる情報は、文字列の他、ディクショナリや配列を持たせることができますが、複数の属性をディクショナリに持たせるには配列では意味がわかなくなりますし、ディクショナリにディクショナリを持たせればすみますが、記述が複雑になってしまいます。

複数の属性を持たせるにはクラスモジュールを活用する。

そこで、ディクショナリにクラスを格納することで、より簡単な記述で複数の属性を持たせることができます。

たとえば、行・列の値をディクショナリに持たせたいとします。そのためには、まずクラスモジュールに複数の変数を定義します。

クラスモジュール: tableEndRowCal

Option Explicit
Public endRow As Long
Public endCol As Long

その後、まずクラスを定義・生成し

Dim endRowCol As tableEndRowCol
Set endRowCol = New tableEndRowCol

クラスにデータを格納後、ディクショナリにクラスを格納します。

    Dim 最終行列 As Dictionary
    Set 最終行列 = New Dictionary

    endRowCol.endRow = Thisworkbook.sheets(シート名).Cells(Rows.Count, 1).End(xlUp).row
    endRowCol.endCol = Thisworkbook.sheets(シート名).Cells(1, Columns.Count).End(xlToLeft).Column
    最終行列.Add シート名, rowCol

これで、あるシートの最終行や最終列を取り出したいときには

最終行列(シート名).endRow

と書くだけでよく、コードの可読性が格段にあがります。

今回は以上になります。ではまた。


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