『特定セルが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.