[[20150206135317]] 『リストの不連続印刷について』(sarara) ページの最後に飛ぶ

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

 

『リストの不連続印刷について』(sarara)

連続印刷について教えてください。

Sheet1に文書の雛型があります。この文書は、不特定多数の方に送付するため
氏名や住所などのセルには別の住所録からデータが飛ぶようにVlook関数が入っています。
同じSheetの中には、入力規則のリストボックスがあり、リストには住所録の個人ごとにふっている数字が入っています。

例えば、「1」をリストから選択すると、別ファイルにある住所録の1に該当する個人を
Sheet1の文書の氏名や住所にデータが飛びます。

この文書を印刷する場合、リストで数字を選択して印刷というのを繰り返さないといけなので手間がかかるので、リスト内にある数字を
自動的に選択して印刷を行うように設定したいと思い、このサイトで調べたところ

[[20130626182234]] 『自動で連続印刷をしたい』(Bert)

 『自動で連続印刷をしたい』が一番近い方法だったのですが、リストの数字が連続していない時、例えば「1、2、5、6、9、10・・・」だと印刷ページを
「1-2,5-6,9-10・・・」と指定しないといけません。

そこでリスト内に表記されいている数字のみを連続印刷する方法(VBA)をご教授願えないでしょうか?

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


 別に「1,2,5,6,9,10」でもいいのではないか?
 それとも「,」もなくして「1 2 5 6 9 10」と入力したいということか?
 また、1から10まで印刷したいときも「1,2,3,4,5,6,7,8,9,10」と入力するのか?
 (区切りが「,」(カンマ)か「 」(スペース)かは置いといて)

(ねむねむ) 2015/02/06(金) 14:37


 一番近いかもしれませんが、個人の名前を入力するならともかく、ナンバーを入力するのは
 面倒じゃないですか?

 私ならリストに印刷フラグをつける欄を設けて、印があるところだけ印刷する、というプログラム
 を組みます。

 こんな感じで、○が付いているところだけ印刷する
    [A]   [B]  [C]   [D]
[1] 印刷  No   氏名  住所
[2] ○    1    鈴木  東京
[3]       2    田中  埼玉
[4] ○    3    伊藤  千葉
[5]       4    小林  栃木
[6] ○    5    沢田  群馬
(稲葉) 2015/02/06(金) 15:01

ねむねむ様 言葉不足ですみません。リストボックス内の数字「1 2 5 6 9 10 12 15 16 17 18 22・・・」を印刷するときMsgboxに数字を入力しなくても、印刷実行をした時に自動でリストボックス内の数字が印刷
したいと思ったのです。

稲葉様
そういう方法もあるんですね^^;
またよろしければご教授願えないでしょうか<m(__)m>

皆様、返事がおそくなり申し訳ありませんでした。
(sarara) 2015/02/07(土) 00:27


 リストがあるシート名を「リスト」
 印刷するシートを「様式」
 として、○をつけるのを簡単にするために、リストシートのシートモジュールに
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
        With Target
            If .Address Like "$A$*" Then
                Cancel = True
                .Value = IIf(.Value = "○", "", "○")
            End If
        End With
    End Sub

 右クリックでA列に○をつける細工

 標準モジュールに
    Sub 印刷()
        Dim WS1  As Worksheet  '//リストシート
        Dim WS2  As Worksheet  '//印刷シート
        Dim rNo  As Range      '//印刷シートで、ナンバーを入力するセル
        Dim lst                '//リストを配列に取り込む
        Dim plst As String     '//印刷ナンバーを文字列として取得
        Dim dlm  As String     '//Split関数で使う、区切り文字
        Dim i    As Long       '//ループ処理の変数
        Dim p

        '//設定
        Set WS1 = Sheets("リスト")
        Set WS2 = Sheets("様式")
        Set rNo = WS2.Range("A1")
        dlm = "-"

        '//印刷ナンバーの取得
        lst = WS1.Range("A1").CurrentRegion.Value
        For i = 2 To UBound(lst, 1)
            If lst(i, 1) = "○" Then plst = plst & dlm & lst(i, 2)
        Next i

        '//印刷
        If plst <> "" Then
            For Each p In Split(Mid(plst, 2), dlm)
                rNo.Value = p
                WS2.Calculate
                WS2.PrintPreview
                'WS2.PrintOut copies:=1
            Next p
        End If
    End Sub

 実行はどちらの画面でもOK
 リストシートにフォームか、図形でボタンを作って登録しておくと使いやすいかも。
 いきなり印刷ではアレなので、プレビューのみにしてあります。
 テストがOKなら、コメントアウトを付け替えてください。

(稲葉) 2015/02/08(日) 16:32


稲葉様
いつもいつもありがとうございます。
すごいです!バッチリでした!
私がこうしたいと思う作業をいとも簡単にコードを書かれるので
本当にすごいなあと思っています。
稲葉さんのように私もなりたいですが、なかなか難しいです・・

(sarara) 2015/02/08(日) 20:59


 やりたいことをどんどん見つけて、解決していけばいずれできるようになりますよ。
 私はほかの先生方のように頭がいいわけじゃないので、真似事しかできませんし・・・

 文字列をSplit関数で配列にしてループする方法はいろんな場面で役に立ちますので
 覚えてみてください。
(稲葉) 2015/02/08(日) 21:08

稲葉様

自動印刷について調べていたら、このサイトにたどり着きました。

この質問に近いのですが、
○印のあるシートの自動印刷仕方について教えてください。

   [A]  [B]   [C]     [D]
[1]   様式1 様式2   No   氏名  住所
[2]   ○     ○     1    鈴木  東京
[3]           ○      2    田中  埼玉
[4]   ○             3    伊藤  千葉
[5]                  4    小林  栃木
[6]   ○    ○      5    沢田  群馬

Sheet1([A]列は空白)に上記のようなリストがあり、
Sheet2に様式1の雛形がり、Sheet3に様式2の雛形があります。

様式1のB15、様式2のB5にNOを入力するとデータが飛ぶようになっています。
○印のある様式1と様式2を自動で印刷する方法はありますでしょうか?

マクロについて、初心者で、あれこれ変更して試してみましたが、
できませんでした。
言葉と説明がうまく表現できていなかったら、ごめんなさい。
どうかご教示お願いします。

(niji) 2015/03/30(月) 19:15


 >様式2のB5

 様式2のC15 かな?

 いずれにしても、よく似ているとはいえ、別の質問者さんによる別の質問なので
 新規にトピを立ち上げ、このトピを参照する形で質問したらいかが?

 このトピは、解決ということになっているので、もう、稲葉さんの目に留まらないかもしれないし。

(β) 2015/03/30(月) 19:36


コメント返信:

[ 一覧(最新更新順) ]


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