自分でマクロを記述する


オートマクロでは生成できないマクロは、自分で書きます。ここでは、セルの値を1増やすマクロを例に、説明します。このマクロは、index関数でデータを呼び出す際の、参照行番号を繰り上げるのに使っています。

VBAのツールバーを表示する。

 このようなツールボタンを表示させるために、表示・ツールバーの
Visual Basic にチェックを入れます。図の矢印のボタンが、Visual Basic のエディターを表示させるものです。これをクリックします。

Visual Basic エディターを開く。

エクセルのシートとは別のウインドウが開きます。このウインドウの、挿入メニューを開き、標準モジュールをクリックします。(オートマクロを記述していれば、標準モジュールシートは、既にあるので、これに書き足しても構いません。)

コードを書く。

ここでは、シートのセルの数字を1増やすマクロを書く例で説明しています。マクロ名は、nextd()とします。(次のデータという意味)

モジュールシートに、sub nextd()と書いてエンターを押すと、End Subが自動で記述され、subもSubと大文字になります。

Sub nextd() と End Sub の間に、コードを記述します。

数字が1ずつ増えるセルは、座標がI2(アイ・2)なので、VBAで使う座標は(2,9)になります。
1行目は、今入っている数値を読み取り、これをnbという変数に取り込みます。
nb=Cells(2,9)
If nb>10 then nb=0   データが10行しか無く、nbが10を超えたら、1に戻したいので
nb=nb+1           nbに1足します。

この3行でおしまいです。

マクロを実行する。

ツール・マクロ、実行で、動作を確認します。

マクロ実行ボタンを作る。

このメニューでマクロを実行するのは面倒なので、実行用のボタンを作ります。

そのためのツールバーを、表示・ツールバー・フォームで表示します。

右のようなツールバーの、赤枠で囲ったボタンが、コマンドボタン作成です。

これをクリックし、適当な位置にボタンをドラッグで作ると、先ず最初に、マクロの登録を聞いてきます。

ここで、nextdをクリックして選択します。最初に、この選択をしておきます。

ボタンのデザイン・位置・名前などは、後で設定します。

ボタンが、このようになっているときが、編集モードです。
名前をドラッグして、選択し上書きで「次へ」と書き直します。編集モードになっているときは、ドラッグで大きさ・位置を変更できます。

 このように、選択枠が外れると、ボタンは生きているので、クリックするとマクロが実行されます。編集モードに戻したい場合は、右クリックします。

モジュールシート以外の場所にマクロを記述する(プライベートサブ)。

実は、マクロは、標準モジュールだけでなく、各シートやブックにも記述できます。これらは、実行がそのシートなどに特定されるもの(プライベートサブ)です。プロジェクト一覧の下にある標準モジュールでなく、その上のThis Workbookやsheetをクリックして、シートを表示します。

例1:このbookを開いたときは、エンターキィのカーソル移動が横(右)にするが、閉じたときは元の下に戻しておく、というマクロです。

例2:特定のシートのセルが変化したときに実行されるマクロです。入力されると自動実行される。

Changeを選び、 If Target.Column=* and Target.Row=* then を追加して、特定のセルが変化(入力された)したときのみ実行されるようにできます。

 

表紙へ