CoCoのYDブログ

心に思い浮かんだことを少し掘り下げ発信します

【VBA】連番印刷をする 3

こんにちは

 

引き続き連番印刷です。

今回はプログラム編ということで簡単にですがプログラムを作成しました。

 

f:id:takataka2743:20180928232007p:plain

文字を入力するのはC7とC28のセルですね。

それではプログラムを見ていきましょう。

 

サンプルプログラム

Sub test()
    Dim 入力文字 As String
    Dim 番号, 枚数 As Long
    Dim i As Long

    入力文字 = InputBox("開始する番号を入力してください", "連番印刷", "")
    If IsNumeric(入力文字) Then
    ElseIf Int(入力文字) < 0 Then Exit Sub
    Else: Exit Sub
    End If
    番号 = Int(入力文字)

    入力文字 = InputBox("印刷する枚数を入力してください", "連番印刷", "")
    If IsNumeric(入力文字) Then
    ElseIf Int(入力文字) < 0 Then Exit Sub
    Else: Exit Sub
    End If
    枚数 = Int(入力文字)


    For i = 1 To 枚数
        Range("C7") = Date & " " & 番号 + i - 1
        Range("C28") = Date & " " & 番号 + 枚数 + i - 1
        Worksheets("Sheet1").PrintOut
    Next i

    Range("C7") = "=TODAY()"
    Range("C28") = "=C7"
End Sub

 

1行目:プロシージャの開始

2~4行目:変数宣言

5行目:なし

6行目:InputBoxによる文字の入力

7~10行目:入力された文字が数字で0より大きいか判定

11行目:開始の番号の代入

12行目:なし

13~18行目:開始番号の内容を印刷枚数に置き換えたもの

19~20行目:なし

21行目:For文の開始、印刷枚数文繰り返す

22行目:C7セルに日付と番号を入力

23行目:C28セルに日付と番号を入力(印刷枚数文数字を足す)

24行目:シートの印刷

25行目:Next i

26行目:なし

27行目:C7セルにTODAY関数を入力

28行目:C28セルに=C7を入力

29行目:プロシージャの終了

 

解説

7行目と14行目のIsNumeric(入力文字)は()内の値が数字ならTrueを返します。

ここのIf文以外をExit Subにすることで数字が入力されなかった場合はプログラムを終了するようにしています。

 

22,23行目

Date & " " & 番号 + i - 1

これは今日の日付とスペース、番号を入力しています。

Date & " " & 番号 + 枚数 + i - 1

これは紙を半分に切断して重ねたときに1枚目から順番になるように枚数文がプラスされています。

 

プログラムはこんなもので。

歳後にボタンの追加方法を説明しますね。