[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『自動的に一括印刷』(たっく)
マクロの初心者です。
以下の条件で自動的に一括印刷をしたいです。
シート1の特定のセルに文字が入力されている時、その該当する別のシートを一括印刷をする。
【○○○】←シート名
[5] [6] [8]
[9] Aさん 1234 Aさんの詳細
[10] Bさん (空白) Bさんの詳細
[11] Cさん 4567 Cさんの詳細
・
・
[47] Yさん 6532 Dさんの詳細
[48] Zさん (空白) Eさんの詳細
行は9〜48まで同様に続いています。
別シートで「Aさんの詳細」「Bさんの詳細」,,,,,があります。
列8の「○さんの詳細」をクリックするとハイパーリンクで それぞれの専用のシートにジャンプします。
ここで、列6に数字が入力されている時、それぞれの専用シート先を一括で印刷できる設定をご教授していただけませんでしょうか?
上記の例ですと、Aさん、Cさん、Dさんの専用のシートを印刷したいです。
(空白のB,Zさんは印刷不要です)
(また、上記の名称や数値、各シートの名称は仮定です。実際は詳細な名称があります。)
以上、ご教授宜しくお願い致します。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
いくつか質問です。 1)8列目をクリックすると、ハイパーリンクで該当シートにジャンプすることがわかりましたが、 そのハイパーリンクは関数ですか? それともハイパーリンクの挿入ですか? 2)8列目に表示されている「Aさんの詳細」はそのままシート名ですか? それとも、1,2,3等の連番ですか?
シートを選択させるために必要な情報です。 (稲葉) 2017/06/07(水) 12:35
このような形でどうでしょうか?
Sub takku() Dim r As Range Dim WSs() As String Dim n As Long ReDim WSs(100) n = -1 With Sheets("Sheet1") '実際にリストがあるシート名を指定してください。 For Each r In .Range("I9", .Cells(.Rows.Count, "I").End(xlUp)) '空白以外且つ数字の場合 If (IsNumeric(.Cells(r.Row, "F").Value)) And (.Cells(r.Row, "F").Value <> "") Then With r.Hyperlinks(1) n = n + 1 WSs(n) = Left(.Name, InStr(1, .Name, "!") - 1) End With End If Next r End With If n = -1 Then MsgBox "該当シートがありませんでした" Else ReDim Preserve WSs(n) Sheets(WSs).PrintPreview End If End Sub (稲葉) 2017/06/07(水) 13:48
コメントを消すのは問題ないですが、後で読み解けますか?
>また、「With r.Hyperlinks(1)」の所でエラー表示されます。 エラー時に、ローカルウィンドウで変数 r のプロパティを確認してください。 やり方は以下のサイトを参照してください。
http://excel-ubara.com/excelvba4/EXCEL266.html
http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_200.html
ハイパーリンクが設定されていない または 想定していないセルを参照している可能性があります。
(稲葉) 2017/06/07(水) 15:38
(たっく) 2017/06/07(水) 16:00
30分でわかる内容じゃありません。 頑張ってください。 (稲葉) 2017/06/07(水) 16:02
rはRange型オブジェクト = セルの情報をすべて持っていますので rが参照しているセル番地が知りたければ、エラーで停止した時に イミディエイトウィンドウに ?r.Address と入力すれば、セル番地を教えてくれます。
(稲葉) 2017/06/07(水) 16:17
ローカルウィンドウで配列変数 WSs の中身を確認してください。 シート名が格納されているはずですので、存在しないシート名等があればハイパーリンクを修正してください。 (稲葉) 2017/06/07(水) 16:55
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.