[[20220128062138]] 『VBA 値を変更しながら連続印刷』(WE4) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBA 値を変更しながら連続印刷』(WE4)

印刷する際に1から順番に番号を振りたいです。
(仮)1〜5を振ったとします。
次に印刷する際は、6から印刷したいです。
仮にできない場合はA2に6を入力してからVBAを行いたいです。
また、可能なら印刷する枚数をA3に入力したいです。
   A    B    C
1連続番号
2開始番号
3何枚印刷するか


Sub Print_Out_1() 'セルに値を設定しながら連続印刷する。印刷対象:アクティブシート

    '定数
    Const conStart As Long = 1      '開始番号
    Const conEnd As Long = 5      '終了番号
    Const conStep As Long = 1       '間隔
    Const conCell As String = "A1"  'セル番地
    '変数
    Dim i As Long
    With Application
        .ScreenUpdating = False
        With .ActiveSheet
            For i = conStart To conEnd Step conStep
                .Range(conCell).Value = i
                .PrintOut
            Next
        End With
        .ScreenUpdating = True
    End With
End Sub

< 使用 Excel:Excel2019、使用 OS:unknown >


詰まっている部分がよくわかりませんが何点か。

■1
>印刷する枚数
https://daitaideit.com/vba-from-to/
https://www.osiete-excelvba.work/entry/2019/12/18/095342

■2
>連続番号、開始番号、何枚印刷するか
もしも、セルの値を参照したいのであれば、Const(定数)ではダメですね。

逆に、「i」(変数)を書き込むのがアクティブシートのA1セルに固定されているのであれば、

 .Range(conCell).Value = i
     ↓
 .Range("A1").Value = i

のように直接書いたほうが分かりやすいように思います。(現状がダメとは言いませんが)

■3
↓もなんか回りくどい印象です。(こちらもダメではないかもしれませんが・・・)

    With Application
        With .ActiveSheet

(もこな2) 2022/01/28(金) 11:17


 もこな2さんの意見に同感ですが、
 >何枚印刷するか
 は、もしかして連番1-5の部分をA3セルの値を参照して可変にするという意味では?

 その辺を加味した参考例ですが、
  
Sub Print_Out_2()

    Dim st As Long          '開始番号
    Dim ed As Long          '終了番号
    Dim i As Long

    Application.ScreenUpdating = False
    With ActiveSheet
        st = .Range("A2").Value
        ed = st + .Range("A3").Value - 1
        For i = st To ed
            .Range("A1").Value = i
            .PrintOut
        Next i
        .Range("A2").Value = i
    End With
    Application.ScreenUpdating = True
End Sub

 なお、 With ActiveSheet の部分は具体的なシート名を入れたほうが
 間違いが起こりにくいので私としては好みです。
  
(try) 2022/01/28(金) 13:12

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.