2018-06-01から1ヶ月間の記事一覧
VBA Select Case文における条件式の短絡評価活用の是非について述べる。 前提 以下の書籍で、Select Case文の条件式短絡評価について記載されているが、そのテクニックとしての是非についてTwitter上で疑問が上がっていた。入門レベルでは決して足りない実務…
メソッドチェーンとは メソッドチェーンとは、ひとつのオブジェクトに対して複数メソッドを1ステートメントで実行するテクニックである。 具体的には、オブジェクトのメソッドが自分自身を返すように設計することで、メソッドをドットで繋ぐだけで次々とその…
このブログを書き始めた当時、VBA界隈は旧態依然としたコードで溢れていた。 全ての変数はプロシージャの先頭で宣言され、変数名は極端に省略されて読んでも意味が分からず、それを補完するために本来必要のないコメントでコードは散らかっていた。プログラ…
今回はマクロで利用する設定値をシートに保存し、汎用的に文字列でアクセスできるようにするテクニックの紹介。 作り方 標準モジュールを挿入し、プロパティウィンドウからオブジェクト名をConfgに変更する。 Configモジュールに以下のコードを張り付ける。 …
プログラミングが上達すると、コードの共通部分をプロシージャに切り出すことを覚える。 コードを共通化すれば、共通部分に変更が発生した場合に、修正は一か所で済むので効率的だとされる。はたして本当にそうだろうか? 私もつい最近まで、コードの共通化…
VBAでは互いに関連するプロシージャをひとつのモジュールに纏めることが多い。 このとき、呼び出す側と呼ばれる側のどちらを先に書けば良いだろうか。以前の私の考えでは、例えばProc1がProc2を呼び出すとき、呼ばれる側を先に定義しておくという意味で先に…
今回はマクロを実行できるリボン作成方法の紹介。 Excel2013をターゲットにしている。2010でもほぼこの通りにできるが、微妙にrelsに指定するURLが違ったりするのでうまくいかない場合は他のサイトを合わせて確認することをお勧めする。 ブックの準備 新規ブ…
プログラミングでどうにもならないバグに出会ったとき、そのバグを回避するコードを書くことになる。 バグの回避コードというのは厄介で、単体で読んでも一見何をやっているのかさっぱり分からないことが多い。これをメインの処理コードに混ぜ込むと、メイン…
作成中のマクロでバグっぽい事象が確認されたのでメモ。 発生した環境はExcel 2013 32bit on Windows 10 Home 64bit。マクロというよりは、手でやっても同じことになるので手作業の方を先に紹介。 新規シートを挿入する。 B1セルに時刻を入力する。 A1:B2の2…
角丸シェイプは普通の四角形に比べて柔らかい印象を与えるため、よく使用される。しかし普通に配置すると、シェイプのサイズによって角丸のサイズも拡大・縮小するため、丸めサイズが不揃いで格好悪い。 諦めているか、目視で微調整している方がほとんどだと…
オートシェイプを扱うマクロで特にややこしいのがAdjustmentsプロパティの調整だ。Adjustmentsはシェイプを選択したときに黄色のハンドルが表示されるもので、ドラッグすることで調整ができる。 説明などでよく利用される吹き出しもAdjustmentsプロパティを…
VBAでは、変数宣言をIfやFor等の制御構文の中に書くことができる。 作法としてどうなのって話は一旦置いといて、とりあえず実証してみよう。以下のマクロは正常に実行できる。 Option Explicit Sub hoge() If False Then Dim variable As Integer End If var…
今回の記事は重なりあうシェイプを自動判定してグループ化するマクロ。 といっても以前にクラスモジュールを使用してシェイプ同士が重なっているかどうかの判定までは作ってるので今回は手入れしてちゃんとグルーピング部分まで完成させたのでコードの紹介の…
今回は多重的にグループ化されたシェイプを全てグループ解除するマクロを紹介する。 グループ化されたもの同士がさらにグループ化されていると、一度解除しても以下のようにまだ子グループが残る。 もう一度解除するとようやくすべてのシェイプが分解される…
今回はExcelのウィンドウを1秒ほど最前面に出してから、元の重ね順に戻すマクロを紹介。 マクロというか、ほとんどAPI処理になってしまった。何がしたかったかというと、以前作成したスクリーンショット自動貼り付けマクロ(以下)において、貼り付けがうまく…