[[20170607113658]] 『自動的に一括印刷』(たっく) ページの最後に飛ぶ

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

 

『自動的に一括印刷』(たっく)

マクロの初心者です。
以下の条件で自動的に一括印刷をしたいです。
シート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

ハイパーリンクは挿入です。
また、シート名は連番ではなくそれぞれ異なる名称のシートです。
(たっく) 2017/06/07(水) 12:57

 このような形でどうでしょうか?

    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

「実際にリスト〜」は("sheet1")の所を実際のシート名に変更すればよろしいのでしょうか?
また、「空白以外〜」の文字は消して問題ないでしょうか?
(たっく) 2017/06/07(水) 15:20

また、「With r.Hyperlinks(1)」の所でエラー表示されます。
(たっく) 2017/06/07(水) 15:24

 コメントを消すのは問題ないですが、後で読み解けますか?

 >また、「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

稲葉様
ありがとうございました。
頑張ってみます。
(たっく) 2017/06/07(水) 16:04

 rはRange型オブジェクト = セルの情報をすべて持っていますので
 rが参照しているセル番地が知りたければ、エラーで停止した時に
 イミディエイトウィンドウに ?r.Address と入力すれば、セル番地を教えてくれます。

(稲葉) 2017/06/07(水) 16:17


問題は解決されて次に
Sheets(WSs).PrintPreview
でエラ−9がでます。
これも同じようにすれば解決できるのでしょうか?
(たっく) 2017/06/07(水) 16:46

 ローカルウィンドウで配列変数 WSs の中身を確認してください。
 シート名が格納されているはずですので、存在しないシート名等があればハイパーリンクを修正してください。
(稲葉) 2017/06/07(水) 16:55

コメント返信:

[ 一覧(最新更新順) ]


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