[[20170514141418]] 『あるセルに入力されている時、そのリンク先のシー』(ユウスケ777) ページの最後に飛ぶ

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

 

『あるセルに入力されている時、そのリンク先のシートを一括印刷』(ユウスケ777)

マクロの全くの初心者ですが以下の条件で一括印刷をしたいです。
?@シート1の特定のセルに文字が入力されている時、その該当する別のシートを一括印刷をする。

【全社員】←シート名
  [1]   [2]   [3] 

[1] Aさん  1234  Aさんの詳細

[2] Bさん (空白) Bさんの詳細

[3] Cさん  4567  Cさんの詳細

[4] Dさん  6532  Dさんの詳細

[5] Eさん (空白) Eさんの詳細

別シートで「Aさんの詳細」「Bさんの詳細」,,,,,があります。
列3の「○さんの詳細」をクリックするとハイパーリンクで
それぞれの専用のシートにジャンプします。

ここで、列2に数字が入力されている時、それぞれの専用シート先を一括で印刷できる設定をご教授していただけませんでしょうか?

上記の例ですと、Aさん、Cさん、Dさんの専用のシートを印刷したいです。
(空白のB,Eさんは印刷不要です)

以上、宜しくお願い致します。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


こんな流れでできそうですが、

1)2列目を上から順番に調べて、以下を繰り返す
2)空白でなかったら
3)隣のセルのハイパーリンク先アドレスを調べて
4)そのセルのシートを求めて
5)そのシートを印刷

このうちの何番がわかりませんか。

シート名が、Aさん、Bさん、…であれば、もっと簡単です。

(マナ) 2017/05/14(日) 14:54


早々のご返答ありがとうございます。
マクロが今回初めてですのでもし可能であればプログラム?も
一緒にご教授して頂けると大変助かります。
(ユウスケ777) 2017/05/14(日) 16:27

>「Aさんの詳細」「Bさんの詳細」

これがシート名ですか?

(マナ) 2017/05/14(日) 16:40


はい。その通りです。
(ユウスケ777) 2017/05/14(日) 16:42

該当するシートが存在しないとエラーになります

 Option Explicit

 Sub test()
    Dim c As Range

    For Each c In Range("c1", Range("c" & Rows.Count).End(xlUp))
        If c.Offset(, -1).Value <> "" Then
            Worksheets(c.Value).PrintPreview
        End If
    Next

 End Sub

(マナ) 2017/05/14(日) 16:57


考え方を変えて、こんなのでも。

1)すべてのシートについて、以下を繰り返す
2)シート名が、3列目のどの行にあるか調べて
3)その行の2列目のセルが空白でなかったら
4)そのシートを印刷

 Option Explicit

  Sub test2()
    Dim ws As Worksheet
    Dim m

    For Each ws In Worksheets
        m = Application.Match(ws.Name, Columns(3), 0)
        If IsNumeric(m) Then
            If Cells(m, "B").Value <> "" Then
                ws.PrintPreview
            End If
        End If
    Next

 End Sub

(マナ) 2017/05/14(日) 20:48


コメント返信:

[ 一覧(最新更新順) ]


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