
タックシールを使って宛名の印刷をすると、シート1枚すべてのシールを丁度使い切ることはなく、ほとんどの場合余りがでます。
余ったシールを印刷しようとすると使用した分の空白レコードが必要になります。この空白レコードをACCESSのSQLで実現してみました。
SQLは UNION 句を使います。空レコードのレコード数だけ UNION 句で追加します。
また、別な方法も後日試したいと思います。
Access テーブル「名簿」の作成
フィールド「ID」「住所」「氏名」の極簡易なテーブルです。

Access フォーム「名簿」の作成
フォームのフォーマット
テキストボックスを3個配置します。テキストボックスの名前とデータは「ID」「住所」「氏名」としています。

イベントの作成
イベントの作成は、名簿アイコン(下画像の左上)の下黒の■を右クリックして表示されたメニューの下「フォームのプロパティ」を左クリックすると、プロパティシートが右に開きます。
タブ「イベント」を左クリックして、表示されたメニューの「読み込み時」の右にある「…ボタン」の左隣のボタンをクリックして「イベントプロシージャ」を選択後「…ボタン」をクリックするとコード入力フォームが開きます。

コード入力

Private Sub Form_Load()
Dim mysql As String
Dim Res As Variant
Dim I As Long
Res = InputBox("使用済みの枚数", "入力")
For I = 1 To Res
mysql = mysql & "(SELECT "
mysql = mysql & -I & " AS NUM"
mysql = mysql & ", '' AS ID"
mysql = mysql & ", '' AS 住所"
mysql = mysql & ", '' AS 氏名"
mysql = mysql & " FROM 名簿)"
mysql = mysql & " UNION "
Next I
mysql = mysql & "(SELECT "
mysql = mysql & "ID AS NUM"
mysql = mysql & ", ID "
mysql = mysql & ", 住所"
mysql = mysql & ", 氏名"
mysql = mysql & " FROM 名簿);"
Me.RecordSource = mysql
End Sub
空レコードの SQL は元のテーブル「名簿」にないフィールド NUM を値 -I (レコードで値が異なる)で追加しています。値が異ならないとグループ化されて1レコードしか追加できません。
結果はソートされますので、空レコードを先頭部分にするため空レコードのSQLの NUM は – の値にし、本データの NUM の値は ID にしています。
フォームのオープン
入力フォームの表示
コード入力後、フォーム「名簿」をオープンしてみます。入力フォームが開くので枚数を入力します。

例では5を入力しています。OKボタンをクリックして進みます。

SQLをレコードソースにセット
5行空白レコードができました。

プロシージャのコードを修正
インプットボックスに入力される値は、期待されるものと違うものが入力されることがあるので、チェックを設けます。
Option Compare Database
Option Explicit
Private Sub Form_Load()
Dim mysql As String
Dim Res As String
Dim I As Long
Res = InputBox("使用済みの枚数", "入力")
mysql = ""
If StrPtr(Res) = 0 Or Res = "" Then
'何もしません
ElseIf Not IsNumeric(Res) Then
'何もしません
ElseIf Int(Res) = 0 Then
'何もしません
Else
For I = 1 To Res
mysql = mysql & "(SELECT "
mysql = mysql & -I & " AS NUM"
mysql = mysql & ", '' AS ID"
mysql = mysql & ", '' AS 住所"
mysql = mysql & ", '' AS 氏名"
mysql = mysql & " FROM 名簿)"
mysql = mysql & " UNION "
Next I
mysql = mysql & "(SELECT "
mysql = mysql & "ID AS NUM"
mysql = mysql & ", ID "
mysql = mysql & ", 住所"
mysql = mysql & ", 氏名"
mysql = mysql & " FROM 名簿);"
End If
If mysql = "" Then
mysql = mysql & "SELECT "
mysql = mysql & "ID AS NUM"
mysql = mysql & ", ID "
mysql = mysql & ", 住所"
mysql = mysql & ", 氏名"
mysql = mysql & " FROM 名簿;"
End If
Me.RecordSource = mysql
End Sub
