2018年 10月 の投稿一覧

ピボットテーブルを作る マクロ VBA

クロス集計で便利なピボットテーブル。どこの会社でも使わない会社はないかと思います。

 

ただ、ピボットテーブルを作ることに時間をかけていては本来業務が進みません。

しかも、毎回毎回ピボットテーブルを作るのも面倒です。

ということでピボットテーブルを作成するマクロを紹介します♪

 

マクロでピボットテーブルを作るには手順があります。

1、元データを準備

2、セルに見出しラベルを設定する

3、シートを作成する

4、ピボットテーブルを作成する(範囲を指定する)←ココがピボットキャッシュ

5、作ったピボットテーブルをどのように設定するかを決める←ピボットテーブルスコレクションのプロパティを決める

ピボットテーブルのメソッドやプロパティを1から覚えるより、

マクロの記録で必要部分を変更させるほうが早いかと思います。

てなわけで早速マクロの記録で1~4を記録させましょう♪

 

記録させた内容を見ていくと、こんな感じ

長ったらしいコードですが、ピボットテーブルのキャッシュはコードの1~4行目で設定されています。

コードの1~4行目のソースデータの範囲を変数にすれば汎用性のあるピボットキャッシュができます。

コードの5行目以降はほとんど既定値のプロパティなので下記のように整理すればスッキリしたコードになるかと思います♪

ちなみに商品コードを行フィールドに加えるというマクロを追加しています。

ではでは♪

そもそもマクロって何ができるの?という方向け VBA マクロ で何ができるか

・マクロって何!?

・自動化できるって聞いたけどどんなものなの?・・

・実際に見てみたい!

・興味あるけど難しそう・・

・よくわからん!

っていう方は見てみていただければ♪

例題を沿ってどんな処理をさせているのかを実際にコードを書きながら動画にしてみました。

解説というより紹介動画なのであしからずw

動画撮影に慣れていないのでおどおどしゃべっているのはどうかご容赦くださいw

 随時更新していきますw

マクロの処理速度を調べる Time関数 ループの処理速度を比較する

マクロの処理速度って地味に気になりますよね。

簡単な処理なら一瞬ですが、分岐やループの長さ等により徐々に遅くなります。

処理時間を調べるにはTime関数を使用します。

 

ちなみに私は

For NextでA列の1行目から最後の行(1,048,576)w  まで行番を割り当てる処理を計測しました。

マクロを実行させたらフリーズしました!ショック!

と思いきや、8分3秒で処理できましたww

是非みなさんも1行目から最後の行まで処理計測をしないことをオススメしますw

 

サンプルは1行目から5000行目まで行番を割り当てる処理の処理時間を調べるマクロです。

最後の行までではないので安心して確認してみてくださいw

ちなみにこれは2秒で処理されましたw

アクティブシートの画像を全て削除する マクロ VBA For each構文 Shape.Typeプロパティの一覧表

たくさんの画像を扱っていると一気に画像の削除をしたくなるときがあります。

 

都度、手作業で削除する方法は

 

①画像を選択してdeleteキーで消去する

 

全て選択して消去する場合は

 

②Controlキー + G  → セル選択 → オブジェクトをにチェック → OK で画像全てが選択されるので deleteキー!

 

本題のマクロで一気に消去するには For each 構文を使います♪

For eachはお初目ですねww

For each構文はオブジェクトの中身を調べてくれる優れものです♪

For eachでShapeオブジェクトを対象にして削除しちゃいましょう!

 

サンプルは下記

shapeオブジェクトはたくさんのオブジェクトを含んでいます。

下記は備忘録として記載しておきます。

画像は msoLinkedPicture もしくは msoPicture を指定します。

オブジェクト名 詳細
msoShapeTypeMixed -2 他のオブジェクトと混ざっている状態
msoAutoShape 1 グラフ
msoCallout 2 吹き出し 引き出し線
msoChart 3 グラフ
msoComment 4 コメント
msoFreeform 5 フリーフォーム
msoGroup 6 グループ化された図形
msoEmbeddedOLEObject 7 埋め込みOLEオブジェクト
msoFormControl 8 フォームコントロール
msoLine 9
msoLinkedOLEObject 10 リンクOLEオブジェクト
msoLinkedPicture 11 リンクしている画像
msoOLEControlObject 12 ActiveXコントロール
msoPicture 13 画像
msoPlaceholder 14 プレースホルダー
msoTextEffect 15 テキスト効果
msoMedia 16 メディア
msoTextBox 17 テキストボックス
msoScriptAnchor 18 スクリプトアンカー
msoTable 19
msoCanvas 20 キャンバス
msoDiagram 21 図表
msoInk 22 インク
msoInkComment 23 インクコメント
msoIgxGraphic 24 スマートアート
msoWebVideo 26 ウェブビデオ
msoContentApp 27 コンテンツアプリ
msoGraphic 28 グラフィック
msoLinkedGraphic 29 リンクグラフィック