【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列のデータを認識して、列の要素数が10になりました。

以上で解説は終わりです。
VBAスキルアップの参考情報
近年は、ChatGPTをはじめとするAIの登場によって、学習のスタイルが大きく変わりました。
分からないことがあれば、AIに尋ねれば答えがすぐに見つかる時代です。
とはいえ、AIを使いこなすには、自分自身の基本的な知識や理解力が欠かせません。
全体像をつかむためには、やはり書籍などで体系的に学んでおくことが今でも有効です。
そのうえでAIを活用すれば、自分の理解度に合わせた的確な解説や、応用のヒントを得ることができます。
「学んで基礎を築く → AIで補い発展させる」──このサイクルを重ねることで、VBAスキルは着実に高まっていくでしょう。
VBAのスキルアップ
VBAを学び始めるなら
入門書は、どれを選んでも大きな差はないように感じます。
どれを選ぶかに悩むことに時間をかけるよりも、まずは手頃な一冊を手に取って進めてみるのがおすすめです。
もし迷ったときには、私はインプレス社の「いちばんやさしい」シリーズを選ぶことが多いです。
基礎を超えて力をつけたいなら
私は上級者を目指していましたので、入門書にとどまらず、このような内容の濃い一冊を選んで学んでいました。
今は誰でもAIを活用できる時代になりましたが、上級者を目指す方にとっては、AIをより上手に活用するという意味でも、こうした本は今なお価値があります。
このレベルの本を一冊持っておくことに、損はないでしょう。
資格で能力を証明したいなら
VBAのプログラミング能力を客観的に示したい場合には「VBAエキスパート試験」があります。
特に「スタンダード」の方は上級者向けです。
あなたが社内業務の改善を行う立場であっても、VBAで作成したシステムをお客様に納める立場であっても、この資格は信頼や安心につながるでしょう。
以下の公式テキストが販売されています。
プログラミングの一般教養
「独学プログラマー」というプログラミングの魅力を解説した書籍があります。
これはVBAではなくPythonを題材としていますが、プログラミングの基本的な知識や思考法、仕事の進め方まで幅広く学べます。
今はAIにコードを尋ねれば、答えが返ってくる時代です。
しかし、この本からは「コード」以上に、プログラミングに向き合う姿勢や考え方を学ぶことができるでしょう。
こちらの記事でも紹介しています。もしよろしければご覧ください。
【初心者歓迎】無料相談受付中

いつもありがとうございます!
限られた時間をより良く使い、日本の生産性を高めたい──
みんなの実用学を運営するソフトデザイン工房では、業務整理や業務改善アプリケーション作成のご相談を承っております。
お気軽にご相談ください。
こちらの記事でも紹介しております。
おわりに


ご覧いただきありがとうございました!
この記事では、「シートのデータを配列に格納する&取得した配列のサイズを確認(Debug.Print)する」方法をまとめました。
お問い合わせやご要望がございましたら、「お問い合わせ/ご要望」フォームまたはコメント欄よりお知らせください。
この記事が皆様のお役に立てれば幸いです。
なお、当サイトでは様々な情報を発信しております。よろしければトップページもあわせてご覧ください。




