配列の関数やステートメント

Array関数
※一括してバリアント型の変数に要素を代入します。

変数名 = Array(要素1,要素2,要素3...)


Dim 配列名() As Variant
配列名 = Array("要素1", "要素2", "要素3")

または

Dim 配列名 As Variant
配列名 = Array("要素1", "要素2", "要素3")

↓これはだめ
※要素数を指定しているので。

Dim 配列名(2) As Variant
配列名 = Array("要素1", "要素2", "要素3")


UBound(配列名)
※インデックス番号の上限を返します。

UBound(配列名)

LBound(配列名)
※インデックス番号の下限を返します。

LBound(配列名)



Redimステートメント
※動的配列の要素をあとから変更する。
※Redim前に格納された値はリセットされてしまう。

Redim 配列名(インデックス番号)

Preserveステートメント
※Redimステートメントで、既存の値を消さないで要素数を変更する。

Redim Preserve 配列名(インデックス番号)


2次元配列


Dim 配列名(3,3)

とした場合。

0,0 0,1 0,2 0,3
1,0 1,1 1,2 1,3
2,0 2,1 2,2 2,3
3,0 3,1 3,2 3,3

IMEの辞書に制御構造やステートメントを登録してしまう

覚えにくいステートメントや制御構造はいちいち覚えたり打ち込むのは面倒なので、IMEに辞書登録をしてしまいましょう。


※「◆」とあるのは改行です。IMEには改行は登録できません。
※”読み”を打ち込むと”登録する文”に変換されるようにします。
読み 登録する文 構文
いふぶん
If 条件式 Then◆条件が真の場合の処理◆End If
If 条件式 Then
条件が真の場合の処理
End If
いふえるIf 条件1 Then◆条件1が真のときの処理◆ElseIf 条件2 Then◆条件2が真のときの処理◆Else◆デフォルトの処理◆End If If 条件1 Then
条件1が真のときの処理
ElseIf 条件2 Then
条件2が真のときの処理
Else
デフォルトの処理
End If
せれけー Select Case 判断対象◆Case 条件1◆処理1◆Case Else◆デフォルトの処理◆End Select Select Case 判断対象
Case 条件1
処理1
Case 条件2
処理2
Case Else
デフォルトの処理
End Select
せれけーいず Select Case 判断対象◆Case Is 条件1◆処理1◆Case Else◆デフォルトの処理◆End Select Select Case 判断対象
Case Is 条件1
処理1
Case Is 条件2
処理2
Case Else
デフォルトの処理
End Select
どるぷまえ Do While 条件◆処理◆Loop Do While 条件
処理
Loop
どるぷあと Do◆処理◆Loop While 条件 Do
処理
Loop While 条件
どあんまえ Do Until 条件◆処理◆Loop Do While 条件
処理
Loop
どあんあと Do◆処理◆Loop Until 条件 Do
処理
Loop Until 条件
ふぉーぶん For カウンタ変数 = 初期値 To 最終値◆処理◆Next For カウンタ変数 = 初期値 To 最終値
処理
Next
ふぉーいち For Each 一時変数 In 配列◆処理◆Next For Each 一時変数 In 配列
処理
Next

Hello, World! ~その1~

※「エクセルマクロ/VBAを始める前に読む記事」のページを参照してください。

Range("A1").Value = "Hello, World!"

とします。
Range("A1").Value
というのはセル番地を指定するときの書き方です。「Range("B2").Value」とすればセルB2になります。

ファイルのダウンロード 

オブジェクト型変数

オブジェクト型変数に格納されるのは、「指定したオブジェクトへの参照」です。具体的な値ではありません。


オブジェクト型変数の種類
名称 オブジェクト
Application エクセル自身
Workbook ワークブック
Worksheet ワークシート
Window ウィンドウ
Range セルおよびセル範囲
Object すべてのオブジェクト

【宣言】

Dim 変数名 As オブジェクト名

【代入文】

Set 変数名 = オブジェクト

指定したセル範囲の空白セルだけ選択する

SpecialCellsメソッドに、引数として定数”xlCellTypeBlanks”を指定して使用します。

Range("A1:A10").SpecialCells(xlCellTypeBlanks).Select



空白セルに文字列を入れるにはこうします。

Range("A1:a10").SpecialCells(xlCellTypeBlanks).Select
Selection.Value = "―"

終端セルを選択する

あるセルを基準にして「対象セルが含まれる領域の終端にあるセル」のことをいいます。
ショートカットキーでは「CTRL+(矢印キー)」です。
VBAでは、RangeオブジェクトのEndプロパティに対して、方向を指定する形で使用します。


方向に対応する定数
方向 記述 ショートカットキー
End(XlUp) Ctrl + ↑
End(XlDown) Ctrl + ↓
End(XlLeft) Ctrl + →
End(XlRight) Ctrl + ←

【使用例】
Range("A1").End(XlDown).Select


【終端行の取得】
例えば、B列の終端行を取得するにはこうします。

Cells(65536, 2).End(xlUp).Select


しかし、Office2007以降では、行の制限が65,536行から1,048,576行へ大幅にアップしています。また、Office97以前では16,384行でした。
これらとの互換性を保つにはこうします。

Cells(Rows.Count, 2).End(xlUp).Select


”Rows.Count”で最大の行数が取得されます。それをCellsオブジェクトの引数としています。

【新規データの入力位置】
終端セルには当然、データが入っています。データを入力するのはその下の (空白の) セルであることが多いでしょう。
その場合はこうします。
Cells(Rows.Count,1).End(XlUp).Offset(1,0).Select

rとc

rが行(Row)
cが列 (Column)

セルの参照

Range("A1")
Range("A1,B4")
Range("A1:B4")