[[20240412134937]] 『特定セルが0以上かつ区分Aのページだけを、マクロ』(ま) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『特定セルが0以上かつ区分Aのページだけを、マクロを使用して印刷』(ま)

特定セル(金額・区分)を自動で参照して、該当する複数ページを全数印刷する方法があれば知りたいです。

現状は
?@「一覧」シートに数字を入力→その入力した数字を参照して該当があれば
数字を入力した横に、区分A・Bのように表記するよう関数を作成済
?A「明細」シートにとび、金額があるページを確認して、印刷画面で都度ページ指定して印刷
(「明細」シートの数字・区分は「一覧」シートを参照させています)

上記のような段階を踏んでいます。

自分なりに調べてみたのですが、シートを参照ような内容はよく見るのですが、同じシートのページを印刷できるなマクロについて紹介しているサイトを探すことができませんでした。
お知恵をお借りできますと幸いです。

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


 ↓こんなんを使うとか。

 'アクティブなセルのあるページだけ印刷
 Public Sub PrintCurrentPage()
     Dim PageNumber As Long
     PageNumber = PageNumberOf(ActiveCell),
     s.PrintOut From:= PageNumber , To:=PageNumber
 End Sub

(通りすがり) 2024/04/12(金) 16:16:33


 ごめん。↓は続き。
 なんせネットで拾ってきたもんだから動きは保証しませんよ。

 '特定のセルのページ番号を取得
 'RangeのTopLeftCellのページ番号を取得
 Function PageNumberOf(c As Range) As Long
    Dim s As Worksheet
    Set s = c.Worksheet

    Dim ActiveRow As Long, ActiveCol As Long
    ActiveRow = c.Row
    ActiveCol = c.Column

    Dim i As Long
    '上から何ページ目
    Dim PageRow As Long
    PageRow = 1
    Dim HPBCount As Long
    HPBCount = s.HPageBreaks.Count
    For i = 1 To HPBCount
        If ActiveRow < s.HPageBreaks(i).Location.Row Then
            Exit For
        Else
            PageRow = PageRow + 1
        End If
    Next

    '左から何ページ目
    Dim PageCol As Long
    Dim VPBCount As Long
    VPBCount = s.VPageBreaks.Count
    PageCol = 1
    For i = 1 To VPBCount
        If ActiveCol < s.VPageBreaks(i).Location.Column Then
            Exit For
        Else
            PageCol = PageCol + 1
        End If
    Next

    'ページの印刷方向("左から右"か"上から下"か)によってページ数は変わる
    Dim PageNumber As Long
        If s.PageSetup.Order = xlDownThenOver Then '左端から右へ  ↓\↓\↓\↓
            PageNumber = (s.HPageBreaks.Count + 1) * (PageCol - 1) + PageRow
        Else '上から下
            PageNumber = (s.VPageBreaks.Count + 1) * (PageRow - 1) + PageCol
        End If
    PageNumberOf = PageNumber
 End Function

(通りすがり) 2024/04/12(金) 16:24:52


 何度もごめん。
 しょっぱなから変なところがあったので、↓以下に修正してください。
 動くのは一応確認できました。

 'アクティブなセルのあるページだけ印刷
 Public Sub PrintCurrentPage()
     Dim PageNumber As Long
     PageNumber = PageNumberOf(ActiveCell)
     ActiveSheet.PrintOut From:=PageNumber, To:=PageNumber
 End Sub

(通りすがり) 2024/04/12(金) 16:38:52


通りすがりさん

コメントありがとうございました!
お礼が遅くなりすみません。

アクティブなセルのあるページだけを印刷が分かったので、今より手間が省けそうです!
ありがとうございます。

理想はアクティブなセルのあるページだけを印刷ではなく、特定セルを参照し、ボタンを押すと印刷…
なのですが、やはりそれは難しいのでしょうか…?

0でも別シートから参照しているので、入力自体はすべてのページであります…
(ま) 2024/04/18(木) 11:39:33


 こんにちは。
 理解力が乏しいので、レイアウトをサンプルで示してもらえませんか?
 今のままだとさっぱりわかりません。

 「一覧」シート、「明細」シートそれぞれを
    A列    B列    C列
 1
 2
 3
 のような形式で説明してください。

 互いに参照しているところを特に明確にしてください。
 行の一文字目を半角スペースで始めると、レイアウトが崩れにくいと思います。

(xyz) 2024/04/18(木) 13:49:23


  投稿用シートレイアウトをクリップボードに取得
               作成者(momo)

  BrkStr:列間の文字列 初期値は「|」
  DataObjectID:DataObjectのLate Binding用(変更不可)

http://www.excel.studio-kazu.jp/kw/20110209184943.html

↑ 便利ですよ ^^。

老人の独り言。。給与明細か、交通費精算書 。。。なのでせうかね (*^^*)

m(__)m
(隠居Z) 2024/04/18(木) 14:48:06


 よく分かってませんが、
 >「明細」シートにとび、金額があるページを確認して、印刷画面で都度ページ指定して印刷
 と書いてるので、
 マクロで「明細」シートの金額が入力されているセルを Activateした後、上のマクロ(アクティブなセルのあるページだけ印刷)を実行すればいいだけの話では?
 必要とあれば上記を必要な分だけ繰り返す。
 違うのかな〜?

(通りすがり) 2024/04/18(木) 16:03:32


コメント返信:

[ 一覧(最新更新順) ]


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