こんにちはhokkyokunです。
VBAについての記事まとめです。
色々と関数を開発したり、しくみを解説してきたので
それをとりまとめます。
配列
配列はプログラミングの基本技術です。
が、VBAはかなり不親切な作りになっており、
これがVBAが使いずらいといわれる要因の一つに感じます。
配列に関する記事を取りまとめました。
配列に関する解説
先ずは配列に関する解説です。
VBA配列は癖が強く、慣れないとエラーが生じやすいので
便利さに気づく前に嫌になって使わなかったり、
ディクショナリーオブジェクトやコレクションオブジェクトに
逃げたりしがちです。
それではもったいないので
投げ出す前に一度記事を見ていただければと思います!
- 静的配列と動的配列の基本
基本は動的配列だけ使ってればOKです。 - 配列の要素数を変更する方法
配列を便利にする関数群
VBA配列は要素を追加するだけでも一苦労です。
空の配列を操作するだけでも平気でエラーが発生します。
他のプログラミング言語のような便利な関数があまりにも少ないので
自作しました。
自分で言うのもなんですが、
何かのプログラムを作る際に
これらを使うのと使わないのとでは作業効率やコード量が全然変わってきます。
だまされたと思って一度見てみてください。
- 配列に要素を追加する方法(任意の位置OK)
- 配列が空かどうか判別する方法(エラー回避に必須)
- 配列から要素を削除する方法
1.番号を指定して削除
2.値を指定して削除 - 配列の並び替え(マージソートのアルゴリズムを活用)
1.数値や日付を含んだ配列の並び替え
2.文字列を含んだ配列の並び替え
実務で活用できる関数
私が実務で使用してきたプログラム群です。
事務系の仕事を長年やってきて
他部門からも依頼があった中で作成してきたものです。
基礎的プログラム
カレンダー、日付操作
事務系・営業系の仕事をしていると
月末月初や第○○営業日などの日付操作をする必要が出てきます。
これらについての処理を便利にする関数です。
- 月末・月初の取得方法
- 第○○営業日を取得する方法
第一営業日も最終営業日も取得できる
アウトルック・メール操作
メールやカレンダーの自動操作ができるようになると
かなりたいていの仕事は効率化できるのではないでしょうか。
- アウトルック操作のための準備
- アウトルックを自動で起動させる方法
既に開いている場合エラーが起こるので、
開いているかどうかの確認もできるようになります。 - 受信メールの取得
未読メールに限定もできます。
Dictionary(辞書)操作
VBAの辞書はめちゃくちゃ強力な武器です。
これを知っているか知らないかで
- できる範囲、
- 回避できるエラー、
- コード量
全然変わります!
少なくともユニークリスト(重複のない一意のリスト)作りには
Dictionaryオブジェクトを使ってください。
- 基本操作(要素の格納と取り出し)
- 重複のない一意のリスト作成
- 辞書内の要素の並び替え
- DictionaryとCollectionどちらを使うべきか
メリットデメリットと使いどころをまとめています。
フィルタリング操作(データの抽出)
データを抽出する操作です。
実務では必ず何らかの条件でデータを絞りこんでいると思います。
ファイル操作
事務処理をしていると以下のような操作を必要とすることがあります。
- フォルダ作成・削除
- ダイアログを出して、ファイルを人に選んでもらう
これらに対応するための解説です。
テーブル操作
テーブルは使っていますか?
使ったことがないのはもったいない!
特にVBA使いの方は使ってみてください。
コード量も減りますし、簡単に表の列や行の追加に対応できます。
- テーブルを使う理由
- テーブルの基本操作
表のテーブル化、変数へのセット、テーブルの削除、列、行の取得 - テーブルの存在を確認する方法
エラー回避に必須。
テーブル化している部位を再度テーブル化するとエラーが生じます。 - テーブルのデータ(レコード)数をカウントする方法
- テーブル集計行の使い方
スクレイピング(インターネット操作)
インターネットの自動操作ができれば
業務の対応範囲は格段に広がります。
ただ、VBAでの自動操作はあまりおすすめしません。
Pythonなどの多言語であれば
優秀なエンジニアがモジュール(プログラム群)を作ってくれていますが、
VBAの場合はあまりありません。
一部seleniumの操作などで操作ができますが
定期的なメンテナンスが必要で使用感としてはいまいちです。
そこに労力をかけるのであれば
Pythonなどを使って優秀な方々が作ったプログラムを
使っていった方が本業の効率化が早く、確実だと思います。