01-VBA

Excel VBA の 配列(サンプルプロシージャの利用)| 現役エンジニア&プログラミングスクール講師

目標

サンプルプロシージャを利用して配列を利用してみる

配列の概要と利用方法

配列とは

配列とは複数の値を順番に保管することのできるデータ構造です。保管されるひとつひとつのデータの型は共通となります。配列には静的配列と動的配列の二つがあります。静的配列と動的配列については以下を参考にしてください。

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ソフト・ウィルス対策ソフトについて書いています。...
RELATED POST
01-VBA

ダイアログボックス|Excel VBA (Part.3)【InputBox+AutoFilter】編 | 現役エンジニア&プログラミングスクール講師

2022年12月4日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

Excel VBA の「オブジェクト活用」(Part.2)【セル活用編】| 現役エンジニア&プログラミングスクール講師

2022年12月15日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

VBScriptを利用したVBAプロシージャの呼び出し(Part.1)| 現役エンジニア&プログラミングスクール講師

2023年2月14日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

ダイアログボックス|Excel VBA (Part.1)【MsgBox】基本文法編 | 現役エンジニア&プログラミングスクール講師

2022年12月2日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

初めてのExcelVBA:開発用フォルダの作成 | 現役エンジニア&プログラミングスクール講師

2022年12月10日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

制御構文|Excel VBA (Part.3)【If Then】ネスト・論理演算子利用編 | 現役エンジニア&プログラミングスクール講師

2022年11月11日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site