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,イミディエイトウィンドウ,エクセル,コレクション,シート,テーブル,テーブルの挿入,プログラミング,マイクロソフト,マクロ,列番号,名前,検索,行番号
関連記事
Excel VBAメモ シートの保護を解除してみる
野暮用で必要になったので。 ポイントはこんな感じ。 Worksheet.Prot ...
Sony Vaio Fit 15A SVF14N29EJPを封切ってみる
実家で使ってるPCを買い替えたので。 Windows XPの買い替えで在庫がなく ...
C#メモ CommandLineUtilsを使ってコマンドラインでヘルプを表示してみる
コンソールアプリを作っててヘルプを表示すんのに字句解析するの面倒だなぁって思って ...
C#メモ 表示しているFormの種類をNameプロパティを使って判別してみる
野暮用で。 ポイントとしてはこんな感じやと思う。 FormのNameプロパティを ...
Windows Live Writerについて
ブログ書くとき、ウェブ上からカチカチタイプ。結構めんどいから、最近出たWindo ...
ディスカッション
コメント一覧
まだ、コメントがありません