リストに追加された内容をチェックシートに差し込み印刷する運用を考えています。
リストは定期的に追加され、前回リストに追加した内容は今回の印刷は印刷しないように
したいです。
例)10:00 1~3を入力/1~3を印刷済
11:00 4~6を入力/4~6を印刷する ※10:00の1~3hは再度印刷しないようにする
■したいこと
一度印刷した内容もリスト上にあれば、再度印刷されるので、印刷済フラグをたてて、
次回印刷は印刷済フラグをチェックし、再度印刷されないようにしたい
※現マクロは下記にしるしています。(モジュール1)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub 流し込み印刷()
Sheets("データ入力").Select
Dim mylastRow As Long '最終行を格納する変数
Dim myLastCol As Integer '最終列を格納する変数
Dim myLastCell As String '最終セルを設定する変数
With ActiveSheet.UsedRange '対象はアクティブシートの使用中のセル
'最終行の行番号
mylastRow = .Rows(.Rows.Count).Row
'最終列の列番号
myLastCol = .Columns(.Columns.Count).Column
End With
Dim i As Integer
For i = 7 To mylastRow
'1
Sheets("問合せ回答一覧").Range("F3:J3") = Sheets("データ入力").Cells(i, 1).Value
'2
Sheets("問合せ回答一覧").Range("F4:J4") = Sheets("データ入力").Cells(i, 2).Value
'3
Sheets("問合せ回答一覧").Range("F5:J5") = Sheets("データ入力").Cells(i, 3).Value
'4
Sheets("問合せ回答一覧").Range("H8:V8") = Sheets("データ入力").Cells(i, 4).Value
'5
Sheets("問合せ回答一覧").Range("H9:V9") = Sheets("データ入力").Cells(i, 5).Value
'6
Sheets("問合せ回答一覧").Range("H10:V10") = Sheets("データ入力").Cells(i, 6).Value
'7
Sheets("問合せ回答一覧").Range("H11:V11") = Sheets("データ入力").Cells(i, 7).Value
'8
Sheets("問合せ回答一覧").Range("H12:V12") = Sheets("データ入力").Cells(i, 8).Value
'9
Sheets("問合せ回答一覧").Range("H13:V13") = Sheets("データ入力").Cells(i, 9).Value
'10
Sheets("問合せ回答一覧").Range("H14:V14") = Sheets("データ入力").Cells(i, 10).Value
'11
Sheets("問合せ回答一覧").Range("H15:V15") = Sheets("データ入力").Cells(i, 11).Value
'12
Sheets("問合せ回答一覧").Range("H16:V16") = Sheets("データ入力").Cells(i, 12).Value
'13
Sheets("問合せ回答一覧").Range("H17:V17") = Sheets("データ入力").Cells(i, 13).Value
Sheets("問合せ回答一覧").PrintOut
Next
i = i + 1
End Sub
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
No.1ベストアンサー
- 回答日時:
こんにちは。
何れにしても、"済"かどうかのフラグについては
セル範囲を使って管理するのが妥当でしょう。
仮に、印刷済のフラグ、について
列位置を 15:16列め(O:P列)
フラグを [ True | その他]
といった具合に設定した場合の例です。
列位置については、
10:00 が、印刷済、なら、15列め
11:00 が、印刷済、なら、16列め
にフラグを設定するように書いています。
書換えが必要なら、VBEの置換機能で
15
16
をそれぞれ、指定の列番号に[すべて置換してみてください。
一応指定が必要な個所に◆マークを振ってあります。
ついでに、オブジェクトアクセスに無駄が多かったので最適化します。
また、Sheets("データ入力")からSheets("問合せ回答一覧")への
値の差し込みも、ブロック毎に纏めて処理するように書いています。
それと、ひとつ気になったのですが、
.Range("F3:J5").Value = ...
.Range("H8:V17").Value = ...
これ ↑ 何故複数列に同じ値を設定するのかな?と考えたのですが、
もしかして[セルの結合]を適用した範囲、ということでしたらば、
.Range("F3:F5").Value = ...
.Range("H8:H17").Value = ...
という風に一番左の単列を指定するのが正しいです。
' ' 以下、標準モジュール
' ' =================================
Sub 流し込み印刷() ' ' 8315727
Dim mylastRow As Long ' ' 最終行を格納する変数
Dim myLastCol As Integer ' ' 最終列を格納する変数
Dim myLastCell As String ' ' 最終セルを設定する変数
With Sheets("データ入力")
.Select ' ※注意!以下、Select禁止
With .UsedRange ' ' 対象はアクティブシートの使用中のセル
' ' 最終行の行番号
mylastRow = .Rows(.Rows.Count).Row
' ' 最終列の列番号
myLastCol = .Columns(.Columns.Count).Column
End With
End With
Dim i As Integer
With Sheets("問合せ回答一覧")
For i = 7 To mylastRow
If Cells(i, 15) = True Or Cells(i, 16) = True Then ' 10:00、11:00◆印刷済フラグ、列位置を指定◆
.Range("F3:J5,H8:V17").Value = Empty
If Cells(i, 15) <> True Then ' 10:00◆印刷済フラグ、列位置を指定◆
' ' 10:00、1 - 3
.Range("F3:J5").Value = Application.Transpose(Cells(i, 1).Resize(, 3).Value)
Cells(i, 15) = True ' 10:00◆印刷済フラグ、列位置を指定◆
End If
If Cells(i, 16) <> True Then ' 11:00◆印刷済フラグ、列位置を指定◆
' ' 11:00、4 - 13
.Range("H8:V17").Value = Application.Transpose(Cells(i, 4).Resize(, 10).Value)
Cells(i, 16) = True ' 11:00◆印刷済フラグ、列位置を指定◆
End If
.PrintOut
End If
Next i
End With ' Sheets("問合せ回答一覧")
i = i + 1
End Sub
' ' =================================
ご提示のコードだけを頼りにして、素直にお応えしたつもりですが、
これでいいのかな?とも思っています。
例えば、10:00の分は印刷済で、11:00の分以降を印刷する、という場合、
Sub 流し込み印刷 を実行すると、F3:J5 を空欄のまま印刷する仕様です。
もしかしたら、3:5行や8:17行を非表示にして印刷したいのかも知れない、とか、
もしかしたら、フラグによって差し込み位置を可変にしたいのかも知れない、とか、
もしかしたら、Sub 流し込み印刷 の実行を何らかのイベントで自動化したいのかも知れない。とか、
想像はしてみましたが、そこまでのニーズではないと判断しました。
何れにしても、
> 印刷済フラグをチェックし、再度印刷されないようにしたい
というリクエストについては、大体、こんな感じになると思いますので。
ニーズに適うものが書けていれば、それが一番いいのですが、
もしも、仕様上の不足がある場合、そしてもしも他に回答が付かない場合、には、
ここは一旦閉じて、シートイメージなどを付した詳細な形で質問を建て直した方が、
解決は近いと思います。
私の回答上の不備や、既に説明されている範囲での仕様に対する誤解や、想定外のエラーや、
処理内容に関する質問、等、あれば、補足欄にでも書いてみてください。
この回答への補足
cj_mover さん
さっそくご回答いただき、ありがとうございます!!
やりたいことはご回答いただいた内容で近いのですが、
やはり現物をみていただいて再度ご返答いただければと思います。
補足では画像はアップロードできないので、
同タイトル(前に「再:」をつけます)にて再度質問を投稿するので、もし可能であれば、
ご返答いただければと思います。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCEL VBA 印刷プレビューダイ...
-
ACCESS VBA レポートプレビュー...
-
ACCESSで印刷プレビューをした...
-
ブラウザから定型フォームを印...
-
javascript print()について
-
C# 印刷可能領域と余白範囲...
-
WebBrowserコントロールでのPri...
-
VBAで印刷ページ最終行にページ...
-
エクセルのVBAマクロで
-
マイクロ(μ)の文字を半角で出...
-
教えてください。
-
outlook 文字を揃えたい。tab...
-
似ているフォント(Win⇔Mac)
-
テキストエディタmiの表示文字...
-
サイトを作る時のcssファイルは...
-
「MS Pゴシック」と同じ幅の...
-
入力規則のリストの文字の大き...
-
cssファイルの名称付け
-
ウィキペディア(Wikipedia)っ...
-
テキストエリア内の文字の装飾
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCEL VBA 印刷プレビューダイ...
-
PDFファイルを開かずに印刷...
-
Excel VBAで文字列の可視長を得...
-
EXCEL VBAでPDFファイルを開い...
-
ページ内にスクロールバーのあ...
-
phpについてですかね、印刷ボタ...
-
サイト全体を縮小して印刷する...
-
ページ内の画像印刷について
-
excelにて各シートの総印刷ペー...
-
コマンドプロンプトでフォルダ...
-
Excel VBA 「印刷中」メッセー...
-
ACCESS VBA レポートプレビュー...
-
Accessレポートでの改ページ
-
印刷時ヘッダーとフッターを挿入
-
インラインフレームの印刷について
-
PageBreaks.Countと印刷範囲の...
-
googleマップのストリートビュ...
-
ACCESSで印刷プレビューをした...
-
C# 印刷可能領域と余白範囲...
-
ヘッダやフッタの印刷をしたくない
おすすめ情報