目標
サンプルプロシージャを利用して配列を利用してみる
配列の概要と利用方法
配列とは
配列とは複数の値を順番に保管することのできるデータ構造です。保管されるひとつひとつのデータの型は共通となります。配列には静的配列と動的配列の二つがあります。静的配列と動的配列については以下を参考にしてください。
Excel VBA の 配列(静的配列)| 現役エンジニア&プログラミングスクール講師Excel VBA の配列(静的な配列)について解説しています。3部構成としている配列の記事の最初の記事となります。...
Excel VBA の 配列(動的配列)| 現役エンジニア&プログラミングスクール講師Excel VBA の配列(動的配列)について解説しています。3部構成としている配列の記事のふたつめの記事となります。...
配列の利用に重要なステートメント、キーワード、関数
Dimステートメント
ReDimステートメント
Preserveキーワード
Array関数
Variant型
LBound関数
UBound関数
Eraseステートメント
サンプルプロシージャ
ワークシートの準備
サンプルプロシージャを利用するために任意のブックに次のようなシートを準備します。
Sheet1
Sheet2
Sheet3
Sheet4
以上のシートをを利用して複数のシートや複数のセルを配列を使って操作してみようと思います。
サンプルプロシージャ1
このプロシージャでは複数のシートを配列で取得して印刷プレビューを確認しています。
'まずオブジェクト型でシートオブジェクトを利用できる変数を準備します。
'これはFor Each文の中で利用します。
Dim st As Object
'Sheetsプロパティを利用して配列に入った複数のシートを取得します。
Sheets(Array("sheet1", "sheet2", "sheet3")).Select
Sub DynamicArray()
Dim st As Object
Sheets(Array("sheet1", "sheet2", "sheet3")).Select
For Each st In ActiveWindow.SelectedSheets
With st.PageSetup
.PrintArea = "C3:H6"
.Orientation = xlLandscape
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
.CenterHorizontally = True
End With
Next st
Sheets("sheet1").Activate
ActiveWindow.SelectedSheets.PrintOut Preview:=True
End Sub
実行結果
一枚目の印刷プレビューが表示されます。
右のスクロールバーを下へスクロールすると配列で指定した三枚のシートのプレビューが確認できます。
サンプルプロシージャ2
このプロシージャでは二次元配列を利用してC3:H6の範囲のセルの値を順番に取得しています。
'二重For文にあるLBound関数とUBound関数の引数の解説をすると
'いずれの関数も第一引数で「配列」を指定します。
'第二引数では「次元」を指定します。
'「1次元目」はシートの行です。今回はC3:H6なので3,4,5,6の4行です。
For i = LBound(cl, 1) To UBound(cl, 1)
'「2次元目」はシートの列です。今回はC3:H6なのC,D,E,F,G,Hの6列です。
For j = LBound(cl, 2) To UBound(cl, 2)
Sub cellsArray1()
Worksheets("sheet1").Select
Dim cl As Variant
cl = Range("C3:H6")
Dim i As Integer, j As Integer, bun As String
For i = LBound(cl, 1) To UBound(cl, 1)
For j = LBound(cl, 2) To UBound(cl, 2)
MsgBox cl(i, j)
bun = bun + cl(i, j)
Next j
Next i
MsgBox bun
End Sub
実行結果
サンプルプロシージャ3
このプロシージャでは二次元配列を利用してC4:H6の範囲のセルの値を取りだして個別の処理を行わせています。
Sub cellsArray2()
Worksheets("sheet4").Select
Dim cl As Variant
cl = Range("C4:H6")
Dim i As Integer, j As Integer, bun As String
Range("C4:H6").ClearFormats
For i = LBound(cl, 1) To UBound(cl, 1)
If i > 1 Then
Exit For
End If
For j = LBound(cl, 2) To UBound(cl, 2)
If cl(i, j) > 3000000 Then
Cells(i + 3, j + 2).Font.Bold = True
End If
Next j
Next i
For i = LBound(cl, 1) To UBound(cl, 1)
If i > 1 Then
Exit For
End If
For j = LBound(cl, 2) To UBound(cl, 2)
If Cells(i + 4, j + 2) / Cells(i + 3, j + 2) > 0.25 Then
Cells(i + 3, j + 2).Font.Color = RGB(255, 0, 0)
End If
Next j
Next i
End Sub
実行結果
それぞれの計算結果によってセルの書式を変化させています。
今回は以上となります。
初心者も実践で通用!「VBA・VBS」おすすめ書籍5選 | 現役エンジニア&プログラミングスクール講師「VBA・VBS」初心者の方が実践業務の中でそれらを活用しt活躍できるために必要な知識を習得できる書籍を紹介しています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...
ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。
「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...