これで楽に!?VBA活用こんにちは、Ryoです。Excelの便利な機能「テーブル」は、データをまとめてくれるので扱いやすく、表の管理も楽になるので使用する頻度も高いと思います。今回はそのテーブルの行を取得したり、新たな行追加や削除などをVBAで行う方法について書いていこうと思います。◆サンプル概要シート名「Sample」上に以下画像のテーブルがあるとします。そのテーブルの3行目のデータを取得してメッセージボックスに表示します。サンプルコードを実行すると、リスト3行目のデータを取得して以下の通りメッセージボックスで表示します。Subこのようにテーブルリストの行を取得するにはListRowsプロパティを使用します。構文:オブジェクト.ListRows(index)ListRowsプロパティは、テーブル内の行を表すListRowsコレクションを取得するもので、index番号を指定すると単独のListRowオブジェクトを取得することができます。このサンプルでは「Sample」シートに作成してある「テーブル1」の中にある3行目のデータを取得し、そのデータをメッセージボックスで表示させるものです。_.ListRows(3).Rangeとすることで2次元配列データとして変数に格納されます。取得した2次元配列データ全てに対して処理を行う場合の一例として、LBound/UBoundを用いたループ処理を行っており、このように記述しておけばデータ数増減に対して柔軟に対応することができます。後は取得したデータを変数Txに開業しながら上書きしていくことで、メッセージボックスで一覧表示のような形にしています。Tx◆参考:リストの行(データ)を入れ替え上のサンプルでリストの行データを2次元配列で取得しましたが、指定した行のデータを入れ替えたい場合は以下のような記述で対応することもできます。Subこのサンプルは一例ですが取り込んだデータを逆の手順で上書きするだけなので、入れ替えたい各行が明確であれば、簡単にデータを入れ替えることができます。Sub上に書いた「行を取得する」構文と同じで、最後にDeleteメソッドをしようして行削除を行うものです。他にも以下のようにオートフィルター機能を使用して削除する方法もあります。2再度指定することでフィルター解除=元に戻すという方法なので、用途に応じて使い勝手の良い処理を選択すれば良いと思います。このように最終行に追加(挿入)されています。画像の黄色の塗りつぶしは処理で行挿入されたことを視覚的に表現しているものです。Subテーブルに新しい行を追加(挿入)する場合はAddメソッドを使用します。この場合はListRows.Addとすることで最終行に追加されます。次にテーブル1列目のセル数をカウントするには.ListColumns(1).Range.countでCountプロパティを使用することで数えることができます。“AAさん”)を指定して書込んでいる内容になります。このサンプルはAddを使用しているので行の追加時に新たな行として挿入されますが、ただ末尾に追加していきたいだけの場合は次のようにAddメソッドを使用せず、カウントデータに+1すればOKです。Sub4.まとめテーブル機能は便利なので利用することも多いですから、そのテーブルを維持・管理していく上で人の手間を出来る限り省く為にVBAで処理を追加していきたいことも多々あるかと思います。ついて書いてみましたので、本記事が何かの参考になれば幸いです。【VBA】ユーザーフォームのスピンボタンを活用するVBAで利用する機会の多いUserFormですが、特定の範囲を増減させるインターフェースとしてスピンボタンがあります。クリック操作で値を増減させることが出来るので何かと使用する機会も多いのではないでしょうか。今回はそのスピンボタンの値設定や取得、増減幅設定やボタンを押した際のイベントなどについて書いていきます。記事を読む【VBA】コマンドボタンをアクセスキーで実行するVBAで扱うユーザーフォームはコマンドボタンで実行させることが多いですが、状況によっては都度ボタンクリックが煩わしいこともあります。そんな時はAcceleratorプロパティを使用することでコマンドボタンにアクセスキーを設定できますので、今回はその方法について書いていきます。記事を読む【VBA】WindowsAPIの関数を使用して時間を計測するVBAで検査工程の計測制御などを行っていると、処理の開始から終了までの時間を測りたいことがあります。他にも純粋に実行時間を計測したり、相当な回数のループ処理を行う際に発生する処理時間を把握したいこともありますから、今回はその際に使用するWindowsAPIのtimeGetTime関数について書いていきたいと思います。記事を読む【VBA】ユーザーフォームでパスワード入力画面をつくるVBAで作成したものを実行する際にユーザーを不特定多数ではなく、限定したいケースもあるかと思います。そんな時に使い道がありそうなPassword(パスワード)入力画面をUserForm(ユーザーフォーム)でつくる方法について書いてみたいと思います。記事を読む【VBA】シート連続コピーのエラー回避/末尾へコピーする用途によってはExcelのSheetを複数、又は大量にコピーすることがあると思いますが、この時にブックに定義名が付いていると「1004」エラーが発生することがあります。今回はそのエラー発生の確認と対処、参考としてワークシート末尾へのコピーについて書いていきます。記事を読む【VBA】セルをダブルクリックしたときに処理を行うExcelでワークシート上のセルをダブルクリックすると編集モードになりますが、そのダブルクリックをイベントとしてVBAで処理を行うことが出来ます。今回はその処理方法について書いていきます。記事を読む【VBA】グラフを作成する(タイトル/軸ラベル/名前/行列入替/2軸表示)Excelで扱うことが多いグラフもVBAを使って作成することが出来ますので、処理するデータをグラフ化するところまで一貫して対応すると更に効率化出来ますね。今回はグラフの作成/グラフ名/グラフタイトル/軸ラベル(凡例)/行列のデータ入れ替え/第2軸表示の方法について書いていきたいと思います。記事を読む【VBA】モジュールを追加/削除/インポート/エクスポートするVBEで標準モジュールやユーザーフォームを追加する場合はメニューの「挿入」から行い、削除やインポート/エクスポートなどもマニュアル操作で行うことが常ですが、これらをVBAの「Addメソッド/Removeメソッド/Importメソッド/Exportメソッド」を使って行うこともできますので、その内容について書いていきます。/Second関数について解説したいと思います。覚えやすい関数ですが、何故か使いたい時にど忘れしてたりしますね。記事を読む【VBA】全角/半角/大文字/小文字を区別せず文字検索する文字列を検索したい時に、統一されていることは稀ですよね。人それぞれですので、全角/半角/小文字/大文字を考慮して検索指定したら大変なことです。そこで今回は区分せずに検索する方法をInStr関数、UCase/LCase関数、StrConv関数を使って行う方法について書いてみます。※当サイトはロリポップ!のハイスピードプランです。はじめまして!Ryoと申します。中小企業製造メーカー勤務で主に生産技術業務に勤しむ一方、社内PC管理やVBAで業務効率化を図る日々を送っていますので、これまでの経験や実践してきた内容をここで発信していきたいと考えています。困った時の一助になれるようなブログ作りを目指します。「自恃ろぐ」はAmazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。