暇になるためのマクロ~下位のほう

エクセルVBA使うときに幅広く役立ったプロシージャのメモ。VBAじゃなくても多分あったら便利。

サンプルプログラムは諸事情により載せないが、文系ド素人こと私が作ったものだから、簡単な分岐とか関数呼び出しとか本見ながらできる人ならできる。
初歩なので、ガチプログラマーには今更だぞ!見るんじゃない!

------------------------------
①他のファイルをつつがなく開くためのfunctionプロシージャ。開けたかどうかを返す。

「ファイルがもう開いてるけど二重に開くつもり?」っていう警告が嫌いなので作った。あらゆる場面で呼び出して使う。

・引数は開きたいファイルのフルパス、読み取り専用で開くかどうか分岐させるためのフラグ

最初に戻り値にエラーの場合の値を設定しておく
指定されたファイルが開いていなければ開き、ファイルが開いていればアクティブにする。
上記の処理が正常に行われた場合のみ戻り値を正常終了を示す値にする(好きに設定していいと思う。イチゼロでもTorFでもわかりやすければ)。

※私はFunctionにしているがSubでも引数を渡す方法はあるから問題なかろう。
※自分用なので横着しており、新たに開くときのみ、読み取り専用かどうかの判断を行うようにしている。
他人に使わせる場合は「読み取り専用を指定したがすでにファイルが開いている場合」にどうするかの分岐もあった方が危なくない。(コピーファイルで作業するか、一旦保存して新たに読み取りで開くかといったことをMsgBoxで確認するといいのかも)

------------------------------
②ActiveWorkbookに指定された名前のシートがあるかどうか判断してあるなしを返すFunctionプロシージャ。

これもよく使う。いかにエラーメッセージを支配下に置けないことを私が嫌っているかがよくわかる。

・引数はシート名(対象ファイル名を引数で渡してもいいと思う。面倒なのでしていない)

①とだいたい似たような感じ。
戻り値と引数をいろいろこねくりまわして応用が利く。たとえばシートがなかったらこのプロシージャ内で作成してしまうのもいいし、非表示のシートも対象とするかどうかで分岐したり、配列に入れた複数シートについて存在するもの、存在しないものを振り分けたりできると思う。
私は面倒だったのでまだ一つもやっていない。

------------------------------
③結合セルの値を取得するプロシージャ。

「また結合セルかあ」と頭を抱える必要が減る。これについてはあらゆるサイトで紹介されているうえに10行くらいで書けるので、コピペしたら簡単。

これを「ユーザー定義関数」として使用すると事務作業がめちゃ楽。 その都度関数を使用したいxlsmファイルに放り込むのもいいが、どのエクセルファイルでも使えるようにPersonal.xlsに入れておいて使うのもよい。
ただ、その場合Personal.xls以外のファイルで使うときは「Personal.xls!関数名(......」のように指定する必要がある。面倒なので、ユーザー辞書に「けつせる」の読みで「personal.xls!関数名」を登録した。

あとは、この関数を使って複数行の見出しを一行にまとめ、空欄なし、値が一意であるような見出しを作成する、というマクロも書いた。これがあるとACCESS取り込みやピボットがしやすくなる。

------------------------------

他にもあった気がするが、今は思い出せないのでまた次回!

この記事が気に入ったらサポートをしてみませんか?