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,イミディエイトウィンドウ,エクセル,コレクション,シート,テーブル,テーブルの挿入,プログラミング,マイクロソフト,マクロ,列番号,名前,検索,行番号
関連記事
PowerShellメモ exeを呼び出してみる
やっぱコレできんとね。 いろいろできるみたいだけど、単純に動かすだけならポイント ...
C#メモ Manifestファイルを追加してフォームの表示がぼやっとしているのをはっきりさせてみる
なんかWindows10だとダイアログの文字列がぼやっとする。 調べてみたらDP ...
C#メモ 外部モジュールがコンソールに出力する文字列を取得してみる
外部プログラムとして呼び出す実行モジュールの文字列を調べたくなったので。 ポイン ...
HT-03Aで天体観測をしてみるアプリ Google Skyマップ
HT-03Aで星座の位置や名前などを確認、要は天体観測する アプリ Google ...
PowerShellメモ for each構文でハッシュテーブル(連想配列)のキーと値を確認してみる
そら、処理したくなるよね?ってことで。 ポイントは...んま、foreachの構 ...
ディスカッション
コメント一覧
まだ、コメントがありません