これはExcelの名簿から一括でメール配信やFAX送付状を作るVBAの各コードを細かく解説したものです。
完成品はこちらのGitHubからダウンロードできます。
表形式を使用した表に行を追加する
エクセルには最初からテーブルという機能があり。これを利用するといろいろ便利な表が簡単に作れる。挿入タブのテーブルから利用することができる。
テーブルでは行を追加したときに前の行の計算式や書式設定が受け継がれる他、計算式でB4:B10などと設定していたところが[No.]という形で使用でき、表内のデータが増えても計算式を変更する必要が無いなどの便利な機能がある。
この表に行を追加する機能を作成しボタンに機能を割り当てる。
コードと解説
下記のコードは表の下に何か文字が入ると勝手に表が拡張される機能を使用している。
Sub 新レコード追加()
' 挿入したい箇所のセルを選択
Dim lastCell As Long
lastCell = Range("A3").ListObject.ListColumns(1).Range.Count
Range("A3").ListObject.ListColumns(1).Range(lastCell + 1).Select
' アクティブなセルをRange表記に変換
Dim newCell As Range
Set newCell = ActiveCell
'配信可否の初期値を入力する
newCell.Value = "×"
' 通し番号を振る
newCell.Offset(0, 1).Value = newCell.Offset(-1, 1) + 1
End Sub
上から順に説明していくと
・表の最後のセルを取得したいので最後のセルを宣言
・最後のセルはA3から始まるリスト(表)のカウント数と同じ
・最後のセル+1の場所を選択
▼イメージ
A | B | C |
---|---|---|
A1(1) | B1(2) | C1(3) |
A2(4) | B2(5) | C2(6)(lastCell) |
lastCel + 1 |
(表形式のセルの数え方と通常のセル選択方法が違うためSelectしたセルをRange表記に変える必要がある)
・newCellをRangeとして宣言
・newCellは現在選択しているセル
・necCellに初期値×を入力(初期値はなんでもよい。今回は×を初期値として入力したかった)
・newCellから見て(0, 1)一つ右のセルに通し番号を振る。通し番号はnewCellから(-1, 1)のセルの値+1
ボタンへの割り当て
挿入→図形→適当な図形を配置する。
作成したボタンを右クリックし、マクロの登録をクリック。
新レコード追加を割り当てる。