[ノンプロ研VBA中級講座3期第6回]テーブル
テーブルのセル範囲の取得→4種類 全体を取得 ・ListObjectオブジェクト.Range 個別に取得 ・ヘッダー行 ListObjectオブジェクト.HeaderRowRange ・データ行 ListObjectオブジェクト.DataBodyRange ・集計行 ListObjectオブジェクト.TotalsRowRange #ノンプロ研 #VBA中級講座
2021-10-15 20:40:03ListObjectオブジェクト .Range:テーブル全体 .HeaderRowRange:ヘッダー行 .DataBodyRange:データ行 .TotalsRowRange:集計行 セル範囲を取得できるプロパティが用意されているので、テーブルに変更が加えられても、コードを変更しなくてOK。 #ノンプロ研 #VBA中級講座
2021-10-15 20:40:28【ListObject からのセル範囲取得】 ・Range テーブル全体 ・HeaderRowRange ヘッダー行 ・DataBodyRange データ行 ・TotalsRowRange 集計行 #ノンプロ研 #VBA中級講座
2021-10-15 20:41:25【フィールド・レコードのコレクション】 →ListObjectオブジェクトの下にある ListRowsコレクションの取得 →ListObjectオブジェクト.ListRows ListColumnsコレクションの取得 →ListObjectオブジェクト.ListCoumns #ノンプロ研 #VBA中級講座
2021-10-15 20:45:52#ノンプロ研 #VBA中級講座 テーブルをVBAで操ると、テーブルを移動してもコードはそのままでOK!!
2021-10-15 20:46:05ListObjectオブジェクト.ListRows ListObjectオブジェクト.ListCoumns テーブル内の行や列を取得できるコレクション #ノンプロ研 #VBA中級講座
2021-10-15 20:47:24ListObjectオブジェクト.ListRows はデータ行のみ (ヘッダー行・集計行は含まない) #ノンプロ研 #VBA中級講座
2021-10-15 20:50:37テーブルだと行数や列数が変化してくれるのでループするときに便利✨ マジックナンバーにならない #ノンプロ研 #VBA中級講座
2021-10-15 20:51:14テーブル行の操作 ListRowオブジェクトの取得 ListRowsコレクションを経由して取得する →ListRowsコレクション[._Default](Index) ※インデックスは整数 #ノンプロ研 #VBA中級講座
2021-10-15 20:53:01For Each文によるテーブル行のループ ListRowsコレクションをループさせることによりListRowオブジェクトを取得できる For Each 変数 In ListRowsコレクション 処理 Next 変数 #ノンプロ研 #VBA中級講座
2021-10-15 20:59:41ListRowオブジェクトはデータベースで言うとレコードなので変数名を「record」にするとわかりやすい #ノンプロ研 #VBA中級講座
2021-10-15 21:00:39【ListRow からのセル範囲取得】 ・Range 1行全体 これだけ #ノンプロ研 #VBA中級講座
2021-10-15 21:02:08Dim record As ListRow ListRowの1行を取り出すときの変数名は「record」にすればいいのか~。 (いつも変な変数名つけてた・・・) #ノンプロ研 #VBA中級講座
2021-10-15 21:03:01テーブル行の追加 →コレクションを使う ListRowsコレクション.Add([Position]) ※Positionはインデックスを表す整数(省略可能) 省略した場合は最終行に追加 1→1行目、2→2行目に追加 ※戻り値は追加したListRowオブジェクトになる #ノンプロ研 #VBA中級講座
2021-10-15 21:06:30ListRowsコレクション.Add(インデックス番号) インデックス番号の位置に行を追加する。 省略すると最終行に追加する。 戻り値は追加したListRowオブジェクト #ノンプロ研 #VBA中級講座
2021-10-15 21:06:43ListRowsコレクションのAddメソッドはListRowオブジェクトを返す ListRowオブジェクトにRangeプロパティをあてることによってRangeオブジェクトにすることができる Rangeオブジェクトにしたら値を代入できる #ノンプロ研 #VBA中級講座
2021-10-15 21:13:39VBAにテーブル使ってたけどVlookupの検索範囲ぐらいにしか活用してなかった。もうちょっといろいろできそう。 #ノンプロ研 #VBA中級講座
2021-10-15 21:15:27Withステートメントを使うとスッキリとテーブル行を追加できる With ListObjects(1).ListRows Dim record As ListRow: Set record = .Add record.Range.Value = Array("Ivy", 24, "banana") End With #ノンプロ研 #VBA中級講座
2021-10-15 21:18:46