スタイル

VBAアセットがプログラミングに採り入れているスタイルを紹介します。

スタイル

オプション機能は最低限にする

「VA公用文」を利用しているユーザーの方から、次のようなご要望をいただいたことがありました。「自分は見出しのマークダウン記号に『#』ではなく『.』を用いています。VA公用文がバージョンアップするたびに、VBEで定数を設定し直しているのですが...
スタイル

マクロのダイアログボックスに表示させたくないプロシージャにはダミーの引数を設定する

ワードやエクセルなどのアプリケーションの「開発」-「マクロ」メニューを開くと、実行可能なプローシージャの一覧が表示され、「実行」ボタンを押すことで実行することが可能です。特定のプロシージャをここに表示させないようにするためには、プロシージャ...
スタイル

2つ以上の文字を全角1文字に収める際には、アドバンス幅で倍率を修正する

本や雑誌では、(1)のような見出し番号が全角1文字の幅になっています。ワードのスタイルやアウトラインでは実現できないために、通常、インデントを調整して文字送りを一致させています。でも、文字幅を調節すれば、本や雑誌と同じように全角1文字の幅に...
スタイル

パワークエリのソースはワークシートから設定する

パワークエリのソースをフォルダとしている場合、フォルダ名などを変更するたびにクエリの再設定が必要となります。VBAアセットでは、パワークエリの使い方がわからない弁護士や事務員でもフォルダ名などを変更できるようにするため、パワークエリがソース...
スタイル

変数の宣言は必要な場合にだけ行う

VBAアセットも、これまでは変数の宣言を必ず行ってきました。変数を宣言しておくと変数名の入力の間違いを防止できますし、併せて型を指定しておくと変数値の入力を誤った場合にどこに誤りがあるのかがわかりやすくなります。このため、VBEのオプション...
スタイル

ユーザーフォームの表示位置は手抜きで設定する

エクセルVBAのユーザーフォームは、エクセルの中央に表示されるのがデフォルトになっています。しかし、セルをダブルクリックして入力値をユーザーフォームから選択するような場合、ダブルクリックしたセルの近くにユーザーフォームを表示させたくなります...
スタイル

編集中の行以外のセルにはロックをかける

エクセルを共有している場合、自分が編集しようと思っているセル以外を書き換えてしまうリスクがあります。特に外部データベースにデータを保存している場合は、Ctrl+Zを使った復元ができない場合もあるので問題です。このため、VBAアセットでは、セ...
スタイル

For Each 構文でワードVBAを高速化する-速度比較ワード版

エクセルVBAの高速化については、さまざまな記事がネット上に公開されています。エクセルVBAについては、条件にもよりますが、「Do While」も「For Next」も「For Each」も大差はなく、より高速化を図りたければ「配列」を使う...
スタイル

シートやドキュメントに変数を保存する

変数はマクロの中に置くのが当たり前です。でも、VBAはエクセルのシートやワードのドキュメントと値のやり取りができますから、シートやドキュメントを保存場所にすることもできます。マクロのなかでもPublic変数を使えば、どのモジュールのプロシー...
スタイル

変数や処理をまとめたくなったらクラスを使う

実は、クラスモジュールは、今まで使ったことがありませんでした。「使わなくてもできないことは何もない」からです。ところが、先日、ある方が使っているのを見て、「なんかカッコいいな~」と思ってしまったのです。そもそも「クラスモジュールとは何なのか...
スタイル

標準モジュールは複数使用する

VBAアセットでは、「コードはシートモジュールに書く」ことを推奨しています。だだし、上の記事にも書いているとおり、テンプレートやアドインのように自分自身以外のファイルを操作する場合は、標準モジュールを使わざるを得ません。「公用文テンプレート...
スタイル

リストの種類を把握する

この段落に適用されているリストは?ワードVBAについては、エクセルVBAに比べると情報量が少なく、「これをやるにはどうしたら良いの?」という疑問を書籍やネットで解決するのがなかなか難しいです。本サイトに掲載している「公用文テンプレート」の今...
スタイル

バージョン番号を統一する

「スタイル」というほどの話ではないのですが、バージョン番号の付け方が統一できていませんでした。特にこだわりはないのですが、バラバラだと見栄えが悪いので、次のようにすることにしました。VerXYZX:メジャーバージョン。ユーザーの操作が変わる...
スタイル

セルには名前をつける

VBAからワークシートのセルを操作する場合、Range("A1")のようにセル番地を使うのが一般的です。しかし、VBAアセットでは、セルに名前をつけてRange("番号")のようにして指定するのを基本としています。その理由は、ワークシートが...
スタイル

VBEの設定

VBAは、VBEと呼ばれる専用のエディタで読み書きを行います。このVBEを使いこなすことが、VBAを使えるようになるための第1歩です。そのためにおススメする設定をご紹介します。オプションの変更「ツール」-「オプション」で「自動構文チェック」...
スタイル

値の共有には引数を使用する

引数とは、プロシージャから別のプロシージャを呼び出すときに計算や処理の元となる値を渡す仕組みです。VBAエキスパート公式テキストのExcel VBAスタンダード(2019年版)には、モジュールレベル変数を利用することで、引数を使用しなくても...
スタイル

CSVファイルを使ってエクセルを共同編集する

エクセルのファイルをOneDriveに保存すれば共同編集が可能になりますが、法律事務所の場合、セキュリティ上の懸念があります。そこで、更新したデータをデータごとにテキストファイルで保存することで複数のユーザーが同時に編集できるようにする方法を紹介します。
スタイル

マクロの中にもワークシート関数をできるだけ使う

VBAには、ワークシート関数を呼び出して使えるようになっています。なんとなく、ワークシート関数「も」使えるみたいな感じで、おまけの機能のように思われがちですが、そうではありません。例えば、ある文字列が入っているセルの行番号を求める場合、Fo...
スタイル

イベントの抑止に併せて、処理速度向上処理を行う

イベントの抑止が必要なことは、別の記事で説明しました。ここでは、その際にマクロの処理速度向上の処理を合わせて行うことを説明します。具体的には、次のようなコードを利用しています。Sub DsblEvents()With Application...
スタイル

マクロの実行は、イベントプロシージャで行う

VBAを実行するための方法には、いろいろあります。もちろんイベントプロシージャを勧めるサイトもあります。VBAアセットは、「一見普通のエクセルのシートに見えるが、その裏でマクロが働いて、便利な機能を発揮している」という「羊の皮をかぶった狼」...