スキップしてメイン コンテンツに移動

投稿

6月, 2018の投稿を表示しています

Excel マクロを個人用マクロブックに保存して共通マクロとして使用する

Excelでマクロ(VBAプログラム)を作って使用する場合、そのブックだけでなく他のブックにも共通して使いたいときがあります。 そのような共通で使用するマクロは、個人用マクロブック(Personal.xlsb)に保存しておくと、どのブック上でも使うことができて便利です。 個人用マクロブックに保存する方法は、以下のとおりです。 (説明にはExcel2013を使用しています) A.[開発]タブを表示する Excel の初期設定で[開発]タブが表示されていないときは、[開発]タブを表示させます。 1)[ファイル]タブの[オプション]を開きます。 2)[リボンのユーザー設定]をクリックして開きます。 3)[リボンのユーザー設定]の「メイン タブ」で、「開発」のところにチェックを入れます。 4)[OK]ボタンをクリックして、完了です。 B.個人用マクロブックを作成する 5)[開発]タブを表示して、「マクロの記録」をクリックします。 6)マクロの保存先に、「個人用マクロ ブック」を選択して、[OK]ボタンをクリックします。 7)「マクロの記録」だったところが、「記録終了」に変わっているので、その「記録終了」をクリックします。 C.個人用マクロブックのモジュールを見てみる 8)「Visual Basic」をクリックすると、プロジェクトに「PERSONAL.XLSB」というVBAProjectができているはずです。 これが「個人用マクロ ブック」です。 この個人用マクロ ブックに保存したマクロは、どのブックからでも利用できるので、共通して使うマクロは、ここに保存するようにすると便利です。

Excelで作成した質疑応答書の質問番号の数式

質疑応答書の質問番号は、数式で設定しておくと、途中で追加や削除をしても連番が維持できて便利です。 では、実際にはどのような数式にすればいいか考えてみます。 上の画像のセルB5に設定する数式を考えます。  =MAX(B$1:B4)+1 セルB1からB5の最大数値に1を加算する数式です。 B1の1の前に「$」を付けて絶対参照にしてあるので、この数式をコピーして、次の行以降に貼り付けても、B$1は変化しません。 (B4の方は、B5・B6・B7・・・と変化します) このように設定することで、コピー・貼り付けで一気に連番を作ることができます。 この計算式はかなり使えるのですが、質疑応答書を編集していると問題が発生することがあります。 例えば、間に一つ質問を追加したい場合、行を選択して「コピー」→「コピーしたセルの挿入」で行を追加して、質問を加えると思いますが、これが上手くいきません。 挿入した行の計算式が一つ上の行と全く同じになって、同じ番号が2つ続く状態になってしまいます。 挿入した行の一つ下の行も、挿入した行の一つ上までの範囲の最大値を参照してしまいます。 また、行削除を行うと削除した行より下の計算式が、「#REF!」エラーになってしまいます。 これを防ぐために、OFFSET関数を使います。 OFFSET関数は、基準セルから縦と横にいくつずれた位置かでセルを指定するもので、これを使うことで、上のような行挿入・行削除での問題が起きなくなります。 書式は以下のとおり。  =OFFSET(基準となるセル, 行のずれ, 列のずれ, 行範囲, 列範囲) 実際の計算式(B5セルの計算式)は、このようになります。  =MAX(B$1:OFFSET(B5,-1,0))+1 一つ上のセル(B4)を表わすのに「OFFSET(B5,-1,0)」としています。 計算式を入力する基準セル(B5)の一つ上のセルなので、行のずれが「-1」、列は同じなので、列のずれが「0」となっています。 OFFSETの引数のうち行範囲と列範囲については、今回の場合は一つのセルを指定する(セル範囲ではない)ので、省略しています。 おそらく、この計算式が最も質問書の番号に適していると思います。

共有する


関連コンテンツ