【Excel VBA 再利用コード集】シートのデータを配列に格納する&取得した配列のサイズを確認(Debug.Print)する

アフィリエイト広告を利用しています。

シートのデータを配列に格納するVBAコード、および取得した配列のサイズを確認(Debug.Print)するVBAコードです。

シートのデータに空欄があったり、ひとつだけ飛び出したデータがあったりするような、いじわるデータにも対応しています。

コピー利用や、AIによる再生成・参考用途を想定しています。

シートのデータを配列に格納する&取得した配列のサイズを確認するコード

コード

  • RunGetUsedRangeArray は、GetUsedRangeArray を実行するためのラッパー(呼び出し用プロシージャ)です。
  • GetUsedRangeArray が、シートの使用範囲を配列として取得する関数です。
  • DebugPrintArraySize は、取得した配列のサイズを確認するプロシージャです。
Sub RunGetUsedRangeArray()

    ' Description
    '   使用範囲を配列として取得する


    ' 変数宣言
    Dim wb As Workbook          ' 対象ブック
    Dim ws As Worksheet         ' 対象シート
    Dim used_rng_arr As Variant ' 使用範囲の配列

    ' ブック・シートの取得
    Set wb = ThisWorkbook
    Set ws = wb.Worksheets(1)

    ' 使用範囲を配列として取得
    used_rng_arr = GetUsedRangeArray(ws)
    
    ' 配列サイズをデバッグ出力
    Call DebugPrintArraySize(used_rng_arr, "UsedRange")

End Sub


Function GetUsedRangeArray(ByVal ws As Worksheet) As Variant
    
    ' Description
    ' 指定されたワークシートの使用範囲を判定し、
    ' Cells(1,1) から最終行・最終列までを配列として返す
    '
    ' Arguments
    '   ws  : 対象となるワークシート
    
    
    ' 変数宣言
    Dim last_row As Long
    Dim last_col As Long
    

    ' シートにデータが存在しない場合は Empty を返す
    If ws.Cells.Find("*") Is Nothing Then
        GetUsedRangeArray = Empty
        MsgBox "シートにデータが存在しません。", vbExclamation
        Exit Function
    End If

    ' 最終行・最終列の取得
    With ws
        last_row = .Cells.Find( _
                        "*", _
                        SearchOrder:=xlByRows, _
                        SearchDirection:=xlPrevious _
                    ).Row
        last_col = .Cells.Find( _
                        "*", _
                        SearchOrder:=xlByColumns, _
                        SearchDirection:=xlPrevious _
                    ).Column
    End With

    ' Return:使用範囲を配列として返す
    GetUsedRangeArray = _
        ws.Range( _
            ws.Cells(1, 1), _
            ws.Cells(last_row, last_col) _
        ).Value

End Function


Sub DebugPrintArraySize(ByVal arr As Variant, ByVal label As String)

    ' Description
    ' 配列の行要素数・列要素数をイミディエイトウィンドウに出力する
    '
    ' Arguments
    ' arr   : 行列構造を持つ配列
    ' label : デバッグ出力用の識別子(シート名など)


    ' 配列が Empty の場合処理を中断する
    If IsEmpty(arr) Then
        Debug.Print label & " : 配列が Empty です"
        Exit Sub
    End If

    ' 配列の行要素数・列要素数を出力
    Debug.Print label & _
                " 行要素数=" & (UBound(arr, 1) - LBound(arr, 1) + 1) & _
                " 列要素数=" & (UBound(arr, 2) - LBound(arr, 2) + 1)

End Sub

使いかた

任意の VBA アプリケーションに組み込んで使用する想定です。

コード実行結果

通常のデータの実行結果

以下のシートを例にとります。

このシートに対してコードを実行すると、以下のような結果が返ります。

コード実行結果

意地悪データの場合の実行結果

以下のようにJ列にデータが飛び出していた場合の実行結果を確認してみましょう。

J列に意地悪データあり

このシートに対してコードを実行すると、以下のような結果が返ります。

意地悪データの場合の実行結果

J列のデータを認識して、列の要素数が10になりました。

運営者・ポテ

以上で解説は終わりです。

VBAスキルアップの参考情報

近年は、ChatGPTをはじめとするAIの登場によって、学習のスタイルが大きく変わりました。

分からないことがあれば、AIに尋ねれば答えがすぐに見つかる時代です。

とはいえ、AIを使いこなすには、自分自身の基本的な知識や理解力が欠かせません。

全体像をつかむためには、やはり書籍などで体系的に学んでおくことが今でも有効です。

そのうえでAIを活用すれば、自分の理解度に合わせた的確な解説や、応用のヒントを得ることができます。

「学んで基礎を築く → AIで補い発展させる」──このサイクルを重ねることで、VBAスキルは着実に高まっていくでしょう。

VBAのスキルアップ

VBAを学び始めるなら

入門書は、どれを選んでも大きな差はないように感じます。

どれを選ぶかに悩むことに時間をかけるよりも、まずは手頃な一冊を手に取って進めてみるのがおすすめです。

もし迷ったときには、私はインプレス社の「いちばんやさしい」シリーズを選ぶことが多いです。

基礎を超えて力をつけたいなら

私は上級者を目指していましたので、入門書にとどまらず、このような内容の濃い一冊を選んで学んでいました。

今は誰でもAIを活用できる時代になりましたが、上級者を目指す方にとっては、AIをより上手に活用するという意味でも、こうした本は今なお価値があります。

このレベルの本を一冊持っておくことに、損はないでしょう。


資格で能力を証明したいなら

VBAのプログラミング能力を客観的に示したい場合には「VBAエキスパート試験」があります。

特に「スタンダード」の方は上級者向けです。

あなたが社内業務の改善を行う立場であっても、VBAで作成したシステムをお客様に納める立場であっても、この資格は信頼や安心につながるでしょう。

以下の公式テキストが販売されています。



プログラミングの一般教養

「独学プログラマー」というプログラミングの魅力を解説した書籍があります。

これはVBAではなくPythonを題材としていますが、プログラミングの基本的な知識や思考法、仕事の進め方まで幅広く学べます。

今はAIにコードを尋ねれば、答えが返ってくる時代です。

しかし、この本からは「コード」以上に、プログラミングに向き合う姿勢や考え方を学ぶことができるでしょう。


こちらの記事でも紹介しています。もしよろしければご覧ください。

【初心者歓迎】無料相談受付中 

運営者・ポテ

いつもありがとうございます!

限られた時間をより良く使い、日本の生産性を高めたい──

みんなの実用学を運営するソフトデザイン工房では、業務整理や業務改善アプリケーション作成のご相談を承っております。

お気軽にご相談ください。


こちらの記事でも紹介しております。

おわりに

運営者・ポテ

ご覧いただきありがとうございました!

この記事では、「シートのデータを配列に格納する&取得した配列のサイズを確認(Debug.Print)する」方法をまとめました。

お問い合わせやご要望がございましたら、「お問い合わせ/ご要望」フォームまたはコメント欄よりお知らせください。

この記事が皆様のお役に立てれば幸いです。

なお、当サイトでは様々な情報を発信しております。よろしければトップページもあわせてご覧ください。

この記事を書いた人

運営者・ポテソフトデザイン工房|日々の業務にちょうどいい自動化を
■人生を追求する凡人 ■日本一安全で、気の向くままに自分の時間を過ごせる、こだわりのキャンプ場を作るのが夢 ■ソフトデザイン工房運営(個人事業者) - 業務改善アプリケーションをご提供 ■人生は時間そのもの。ひとりでも多くの人が「より良い人生にするために時間を使って欲しい」と願い、仕事のスキルの向上、余暇の充実、資産形成を追求。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です