Excel 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#メモ TaskDialogでメッセージにリンクを貼ってクリックしたらブラウザを起動してページを表示してみる
いつもやり方を忘れちゃって困っちゃうのでメモしとくことに。 ポイントはこんなとこ ...
PowerShellメモ for each構文でハッシュテーブル(連想配列)のキーと値を確認してみる
そら、処理したくなるよね?ってことで。 ポイントは...んま、foreachの構 ...
Monoメモ ボタンを追加してみる
Xamarin Studioで空のGUIアプリケーションを作ることはできた(記事 ...
PowerShellメモ Excelファイルに書いたVBAのSubプロシージャを呼び出してみる
C#に続き(記事はここ)、PowerShellでも試したくなったので。 ポイント ...
Excel VBAメモ OSのバージョンを確認してみる
用事があってネットに聞いたらさくっと答えが見つかった。 ポイントはこんなん... ...
ディスカッション
コメント一覧
まだ、コメントがありません