[[20210824213352]] 『備品ラベルへの転記(3列、印刷開始場所指定)』(きむちくん) ページの最後に飛ぶ

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

 

『備品ラベルへの転記(3列、印刷開始場所指定)』(きむちくん)

データベースシートから別シートへ情報を転記し、備品ラベルを印刷するマクロを組みたいのですが、2つの理由で苦しんでいます。

1.備品ラベルはA4サイズに3列×6行=18面となっていること
2.備品ラベルは一度途中まで印刷した後、後日続きから印刷する場合もあること

例)
本日5つの備品が納品されたとすると、1行目のラベルを3面と2行のラベルを左側から2面に情報を印字します。印字したラベルは剥がして備品に貼り付けます。
翌日、3つの備品が納品されたとすると、今度は2行目の右端のラベルを起点にして、3行目の真ん中のラベルまでに情報を印字する必要があります。

このように、毎回印刷の始まる位置が変動するので、VBAを組みにあたってどのような考え方をすれば良いのかがわからず苦戦している次第です。

私が今持っている知識は、for nextとdo loop、if、基本的な変数の扱いくらいなのですが(配列等はまだ勉強したことがありません)、その範囲の知識だけで実現は可能でしょうか。

参考までに、使用している備品ラベルは↓のものです。
https://www.amazon.co.jp/%E3%82%A8%E3%83%BC%E3%83%AF%E3%83%B3-%E5%B1%8B%E5%A4%96%E3%81%A7%E3%82%82%E4%BD%BF%E3%81%88%E3%82%8B-%E3%83%84%E3%83%A4%E6%B6%88%E3%81%97%E3%83%95%E3%82%A3%E3%83%AB%E3%83%A0-%E3%82%B7%E3%83%AB%E3%83%90%E3%83%BC-31075/dp/B00LGM3QNO

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


 わー、すごく身に覚えのあるお話です^^;

 ウチの会社の若い子が、毎回新しいシートに1マス目から印刷してたもんで、
 中途半端に使ったエーワン用紙が大量に発生してましたねー。

 とりあえず方向性の案だけ書かせて頂きます。

 「何行目」の「何列目」から印字するかを指定する開始位置設定用のセルを用意しておいて、
 その近くに[転記]ボタンでも設置しておきます。

 あと、データベースはどんどん追加されていくものだと想定して、
 「今回印刷対象にするか」を指定出来る列でも作っておけば良さそうですね。

 流れとしては、

 まず、開始位置の行番と列番を変数に入れて、
 データベースシートを総当たりして 
   「印刷対象」だったら、印刷用シートの指定位置に転記し、
   転記したら「何行目」と「何列目」を更新する。
 繰り返し

 みたいなのでいいんじゃないでしょうか? (↓概略)

    Dim r As Long, c As Long
    Dim dtRow As Range
    r = [印字開始行].Value
    c = [印字開始列].Value

    For Each dtRow In [データベース].Rows
        If dtRow.Columns([今回印刷対象列]).Value = [印刷対象である] Then
            [印刷範囲].Cells(r, c).Value = dtRow.Columns([印刷内容列]).Value
            c = c + 1      '転記したら列番をひとつ右へ
            If c > 3 Then  '列番が4列目に突入してたら、
                c = 1      '列番を1列目に戻して
                r = r + 1  '行番を次の行へ
            End If
        End If
    Next

 例えばシール1マスあたりの行数が5行だったら
 [印刷範囲].Cells((r - 1) * 5 + 1, c).Value
 みたいな感じで位置を指定すればよろし。って事で。

 その様なマクロを[転記]ボタンから実行して、
 まあ実際の印刷は人がやった方が安全でしょうね..

 以上、流れだけご提案。

(白茶) 2021/08/24(火) 22:42


 ラベル印刷する部分だけデータベース別シートに転記するケースであれば、
 剥がした枚数分、先頭から空白行を挿入とかでダメですか。
 空白を印刷するというイメージです。
 ※用紙が湿気るとプリンタに巻き込みますよね・・・
(#) 2021/08/24(火) 23:02

 >プリンタに巻き込みますよね・・・
 そうなんですよね〜。

 シール剥がした部分ってツルツルだから紙送りで滑っちゃうし。
 内部でシールが剥がれちゃったら目も当てれない...

 保守に来たサービスさんに「出来ればやめてください」って言われちゃいました^^;
 (まだやってるけど...)

(白茶) 2021/08/24(火) 23:10


白茶様

ご返信が大変遅くなってしまいまして申し訳ございません。
大きなヒントをいただけたお陰で、なんとか完成させることができました。

            >If c > 3 Then  '列番が4列目に突入してたら、
              >c = 1      '列番を1列目に戻して
                >r = r + 1  '行番を次の行へ

こういう考えをすれば良いんですね。言われてみれば納得なのに、情けない話、自分では思いつきませんでした。
また、for eachは今の私ではうまく理解できなかったため、do loopで書き換えることにしました。
そのせいで少し煩雑になってしまいましたので、ゆくゆくはfor eachの方も勉強してみます。

本当にありがとうございました。
(きむちくん) 2021/08/29(日) 18:03


(#)さんの。空白行挿入が、シンプルでよいと思いましたがだめでしたか。
以前、Wprdの差し込み印刷で、同じ手法をとったことがあります。

(マナ) 2021/08/29(日) 18:39


コメント返信:

[ 一覧(最新更新順) ]


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