sironekotoroの日記

Perl で楽をしたい

Excel VBAスタンダード 公式テキスト 4章 変数と配列

4-1 配列とは

  • Dim Member(3)Member(0),Member(1),Member(2),Member(3)の要素を設定できるようになる

4-2 動的配列

  • 素数が未定の時に使う
  • Dim Member() As String
  • ReDim Member(3)素数を設定する
    • ただし、ReDimで要素数を変更すると、それまで格納されていた値が消える
    • 素数を宣言した配列ではReDimを利用できない
  • ReDim Preserveとする事で、格納されていた値を消す事無く要素数を変更できる

4-3 静的変数

  • プロシージャが終了しても格納されている値が消去されない変数
    • 最初、定数?かと思ったら違った
  • Dimの代わりにstatic 変数名で宣言する。
  • 使いどころ難しそう

4-4 オブジェクト変数

  • Dim but As Range:セルを格納する型
  • Dim but As Worksheet:ワークシートを格納する型
  • Dim but As Workbook:ブックを格納する型
  • Dim but As Object:すべてのオブジェクトを表す事が出来る
  • Set 変数名 = オブジェクトでオブジェクトを変数に格納する
  • set but = Nothing:明示的にオブジェクト変数を破棄する
Sub sample9()
    Dim WS1 As Worksheet, WS2 As Worksheet
    
    Set WS1 = ActiveSheet
    Set WS2 = Worksheets.Add
    
    WS1.Activate
    WS2.Name = "合計"
    
End Sub

4-5 ユーザー定義型

  • 複数の異なる型を配列にセットできる
  • 宣言セクションで定義を行う
Type ユーザー定義型
    要素名 As 要素の型
    要素名 As 要素の型
End Type
  • セルから異なる方を配列にセットする場合
    • 以下の例の場合には、セルの位置を(配列の要素番号,1)としている
Option Explicit

Type ProfileData
    Address As String
    Age As Long
End Type

Sub sample11()
    Dim Member(3) As ProfileData, i As Long
    
    For i = 2 To 4
        Member(i - 1).Address = Cells(i, 1)
        Member(i - 1).Age = Cells(i, 2)
    Next i
    
    MsgBox Member(2).Address & " " & Member(2).Age
    
End Sub
  • Perlのハッシュっぽく使えるのかも

ううむ

  • 盛りだくさんすぎて忘れそう
    • まぁ、何度でもやれば良いだけのこと