Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2016)
シートに入力しているデータ(複数)を「先頭ページ番号」に設定するには
投稿日時: 21/09/14 19:22:22
投稿者: mani

シートごとに複数ページあり、
各シートに連続した先頭ページ番号を設定しています。
 
先頭ページ番号は別の要素としても利用するため、
「作業グループにして印刷する」という方法が取れません。
 
設定用として用意したシート(同じブック内)に、
各シートのシート名と印刷対象ページ数を取得するところまではできました。
 
同じシートに、各シートの「先頭ページ番号」を入れて、
この値を設定させたいです。
(A列:シート名
 B列:ページ数
 C列:先頭ページ番号 のようにしています)
 
どのようにしたらいいでしょうか。
 
伝わりにくいところがありましたらご指摘ください。
よろしくお願いいたします。
 

回答
投稿日時: 21/09/14 20:55:02
投稿者: simple

各シートごとに、「先頭ページ番号」(FirstPageNumberプロパティ)をセットして、
各シートごとに印刷すればよろしいのでは?

投稿日時: 21/09/14 21:06:25
投稿者: mani

simple さんの引用:
各シートごとに、「先頭ページ番号」(FirstPageNumberプロパティ)をセットして、
各シートごとに印刷すればよろしいのでは?

 
説明がわかりにくかったようで申し訳ありません。
そのようにするにはどう記述すればいいでしょうか、という質問になります。
 
C列に入力している「各シートごとの先頭ページ番号」を、
代入していくにはどのように書いたらいいですか。

回答
投稿日時: 21/09/14 21:39:18
投稿者: simple

まず、ひとつのシートについて、
>「先頭ページ番号」(FirstPageNumberプロパティ)をセットして、
この動作をマクロ記録したらいかがですか?
それを出発点にして、必要な修正を加えていけばよいのでは?

回答
投稿日時: 21/09/14 22:06:36
投稿者: simple

<<設定用シート>>

    A列     B列     C列 
1  Sheet1    2       1
2  Sheet2    3       3
3  Sheet3    2       6

だとすると、
例えば、こんなことではどうですか?
 
Sub test()
    Dim ws As Worksheet
    Dim sh As String
    Dim startpage As Long
    Dim k As Long
    
    Set ws = Worksheets("設定シート")
    For k = 1 To ws.Cells(Rows.Count, "A").End(xlUp).Row
        sh = ws.Cells(k, 1).Value
        startpage = ws.Cells(k, "C").Value
        Worksheets(sh).PageSetup.FirstPageNumber = startpage
    Next
End Sub

細かい修正はそちらでしてください。

投稿日時: 21/09/14 23:44:45
投稿者: mani

ありがとうございました。
微調整してみます。