Excel VBAメモ テーブルの挿入で作ったテーブルを名前で見つけて内容を取得してみる
VBA
野暮用で。
ポイントはこんな感じ。
- テーブルに名前をつけておく
- SheetオブジェクトのテーブルコレクションListObjectsからテーブルListObjectを取得する
- テーブルの名前はNameプロパティを参照する
- テーブルのセルの値はListObjectのRangeに行番号と列番号を指定することで取得できる
作ったシートはこんな感じ。
シートは1つでテーブルはMainTableって名前にした。
んで、コードはこんな感じ。
テーブルを検索するシートは表示しているシート"ActiveSheet"ってことにしてある。
Private Sub Method() ' 変数を定義する Dim objListObject As ListObject Dim objColumn As ListColumn Dim objRow As ListRow Dim nHeader As Integer Dim nRow As Integer Dim nColumn As Integer ' 変数を初期化する Set objListObject = Nothing Set objColumn = Nothing Set objRow = Nothing strName = "MainTable" nHeader = 0 nRow = 0 nColumn = 0 ' ' テーブルの値をイミディエイトウィンドウに表示する ' On Error GoTo MethodEnd ' 途中でループを抜けたいのでDo...Loop Whileを使う Do ' アクティブシートの中にあるテーブルを名前で検索する For Each objListObject In ActiveSheet.ListObjects ' 取得したいテーブルの名前と一致するかチェックする If objListObject.Name = strName Then ' 目的のテーブルなので検索を終了する Exit Do End If Next Loop While False ' 見出しの行番号を取得する nHeader = objListObject.HeaderRowRange.Row ' テーブルの内容をイミディエイトウィンドウに表示する For Each objRow In objListObject.ListRows ' 見出し行のときは処理をスキップしたいのでDo...Loop Whileを使う Do ' 処理中の行番号を取得する nRow = objRow.Index ' 見出し行かチェックする If nRow = nHeader Then ' 見出し行は表示したくないので次の行へ処理をスキップする Exit Do End If ' 値をイミディエイト出力する For Each objColumn In objListObject.ListColumns ' 処理中の列番号を取得する nColumn = objColumn.Index ' イミディエイトウィンドウに行列番号とセルの値を表示する Debug.Print "[" & nRow & "," & nColumn & "]" & objListObject.Range(nRow, nColumn) Next Loop While False Next MethodEnd: ' オブジェクトを開放する If Not objColumn Is Nothing Then Set objColumn = Nothing End If If Not objRow Is Nothing Then Set objRow = Nothing End If If Not objListObject Is Nothing Then Set objListObject = Nothing End If End Sub
で、実行してみるとこんな感じ。
“[行番号,列番号]セルの値"ってなことで表示しとる。
[2,1]1 [2,2]Apple [2,3]100 [3,1]2 [3,2]Lemon [3,3]80 [4,1]3 [4,2]Orange [4,3]120 [5,1]4 [5,2]Grape [5,3]200
んまま、明日への自分へのメモってことで。
VBAExcel,HeaderRowRange,ListColumn,ListColumns,ListObject,ListObjects,ListRow,ListRows,Microsoft,Name,Office,Range,Sheet,VBA,Visual Basic,イミディエイトウィンドウ,エクセル,コレクション,シート,テーブル,テーブルの挿入,プログラミング,マイクロソフト,マクロ,列番号,名前,検索,行番号
関連記事
C#メモ ExcelのCOMオブジェクトの破棄処理を実行直後にしてみる
なんか...メインプロセスを終了しないと、Excelのプロセスが残っちゃう。 っ ...
PowerShellメモ Wordの文書をPDFファイルに変換してみる
サクッとできたらいいなということで。 ポイントはこんなとこ。 ファイルの拡張子を ...
iOS SDK メモ NSRegularExpressionSearchを使って文字列が数値か判定してみる
正規表現が使えるようになってたことを今更知っちゃった...。 今まで文字列が数字 ...
iOS SDKメモ #defineでCGRectSizeを定義してみる
#defineでCGRectMakeとかを定数として定義できるんだねぇ。 知らん ...
ドラえもんの秘密道具を検索してみる
ドラえもん誕生100年前ってことで、みらいサーチなるドラえもんのひみつ道具を検索 ...
ディスカッション
コメント一覧
まだ、コメントがありません