[[20200804180909]] 『複数のシートにそれぞれ条件付けをして印刷』(SS) ページの最後に飛ぶ

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

 

『複数のシートにそれぞれ条件付けをして印刷』(SS)

閲覧ありがとうございます。

・目的
複数のシートに同様の処理をしつつ、それぞれデータが入力されている範囲を印刷したい。

・問題点
下記マクロを作成し実行したところ、複数のシートに同様の処理は行われたが印刷範囲がsheet1の範囲で固定されていた

各シート毎にデータが入力されているセルのみ印刷範囲を設定したいのですが、うまくいきません。

下記マクロの添削いただけますと幸いです。

よろしくお願いいたします。

Sub 重複削除並び替え1()
'変数を指定
Dim i As Long
Dim lr As Long

lr = Cells(Rows.Count, 1).End(xlUp).Row 'lastRowの略

    For i = 1 To Sheets.Count - 2
        Sheets(i).Activate '変数iのシートを開く

        'J列の番号をK3以下にペースト、重複削除
        Range("J2:J" & lr).Copy
        Range("K3").PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
        ActiveSheet.Range("K:K").RemoveDuplicates Columns:=1, Header:=xlNo

        '並べ替え
        Range("K3:K" & lr).Sort key1:=Range("K3"), order1:=xlAscending, Header:=xlNo
        Range("K2") = Range("A2")

        '印刷範囲指定
        Range("E1:M" & lr).PrintPreview
        Range("A1").Select

        'データの削除
         Range("A2:K" & lr).SpecialCells(xlCellTypeConstants).ClearContents

    Next i
    Sheet1.Select
MsgBox "完了しました"
End Sub

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


>lr = Cells(Rows.Count, 1).End(xlUp).Row 'lastRowの略

これを、並べ替えの直前に移動させてみてください。

(マナ) 2020/08/04(火) 18:52


>並べ替えの直前に移動
むしろ、↓のように、Activate の直下の方がよいかも。
 Sheets(i).Activate 
 lr = Cells(Rows.Count, 1).End(xlUp).Row

(もこな2) 2020/08/04(火) 20:31


マナ様
もこな様

 Activate直下に移動したところ目的通りの状態になりました。

変数に値を格納する記述の位置によって挙動が変わるのは盲点でした。

ご回答いただきありがとうございます。

(SS) 2020/08/05(水) 10:49


コメント返信:

[ 一覧(最新更新順) ]


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