[[20191122134027]] 『マクロでシート分け時の条件付き書式のコピー』(TMK) ページの最後に飛ぶ

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

 

『マクロでシート分け時の条件付き書式のコピー』(TMK)

 お世話になります。
 VBAを理解できいないのでお教えください。

 下記のようなVBAで1つのシートからB列の同じグループを別シートに振り分けています。
 今回、ブック自体に条件付き書式を追加したのですが出来上がったシートを見ると
 条件付き書式の数式が「='振り分け元シート'!$D2=""」となっており
 条件書式は元シートを参照しています。
 条件付き書式を各シート用に対応させるにはどうしたら良いのでしょうか?

 '---------------------------------
 Sub GroupingSheetB()
 '---------------------------------
    Dim i%
    Application.ScreenUpdating = False
    With Worksheets(1)
        For i = 2 To .Range("B65535").End(xlUp).Row
        Call AddLine(i, .Cells(i, 2).Value)
        Next
    End With
    Application.ScreenUpdating = True
 End Sub

 '---------------------------------
 Sub AddLine(lineNum%, sheetName$)
 '---------------------------------
    Dim lastLine%
    Call checkAndMake(sheetName)
    lastLine = Worksheets(sheetName).Range("B65535").End(xlUp).Row + 1
    Worksheets(1).Rows(lineNum).Copy
    Worksheets(sheetName).Rows(lastLine).Insert Shift:=xlDown
 End Sub
 '---------------------------------
 Sub checkAndMake(sheetName$)
 '---------------------------------
    Dim tmpWS As Worksheet
    On Error Resume Next
    Set tmpWS = Worksheets(sheetName)
    If tmpWS Is Nothing Then
        Worksheets.Add after:=Worksheets(Worksheets.Count)
        Worksheets(Worksheets.Count).Name = sheetName
        Worksheets(1).Rows(1).Copy
        Worksheets(sheetName).Rows(1).Insert Shift:=xlDown
    End If
    On Error GoTo 0
 End Sub

< 使用 Excel:unknown、使用 OS:unknown >


 最下行の下を指定しているのに「挿入」しているからだと思います

 >Worksheets(1).Rows(lineNum).Copy
 >Worksheets(sheetName).Rows(lastLine).Insert Shift:=xlDown

 の部分を

 Worksheets(1).Rows(lineNum).Copy Worksheets(sheetName).Rows(lastLine)

 としてみてください

(渡辺ひかる) 2019/11/22(金) 14:03


 渡辺ひかるさん

 Sub AddLine(lineNum%, sheetName$)の最下行を変更するとデバックとなり、
 Sub checkAndMake(sheetName$)の最下行を変更すると条件付き書式も変わらず、なおかつ1行目が空欄で振り分けられました。(泣)

(TMK) 2019/11/22(金) 16:26


 >Sub AddLine(lineNum%, sheetName$)の最下行を変更するとデバックとなり、

 最下行を変更するとって?

 挿入を貼り付けにしているだけですよ?

 どんなエラーが出ましたか?

 >Sub checkAndMake(sheetName$)の最下行を変更すると条件付き書式も変わらず、なおかつ1行目が空欄で振り分けられました。(泣)

 すみません、こちらは変更してもしなくてもいいのです
 このプロシージャは、コピー先のシートがあるかどうか調べて、
 なければ新規シートを追加して、一番左側のシートの一行目(見出し?)をコピーして新規シートに貼り付けるというだけです。
 この時点では、条件付き書式は関係ないでしょう。
 それとも 1行目にも条件付き書式が設定されているのですか?

(渡辺ひかる) 2019/11/22(金) 16:40


 渡辺ひかるさん
 ありがとうございます。
 Worksheets(1).Rows(lineNum).Copy Worksheets(sheetName).Rows(lastLine) を
 そのまま転記したらうまく表示してくれました!!!

 改行して貼り付けたらダメでした。改行とかも関係あるのですか???
 それとも私の転記ミスでしょうか?
 何はともあれ完成しました!!
 ありがとうございました!
(TMK) 2019/11/22(金) 16:53

 >改行して貼り付けたらダメでした。改行とかも関係あるのですか???

 大ありです。

 >    Worksheets(1).Rows(lineNum).Copy
 >    Worksheets(sheetName).Rows(lastLine).Insert Shift:=xlDown

 これは、コピーする いうコードと 挿入するという2つの作業を行っています。

 >Worksheets(1).Rows(lineNum).Copy Worksheets(sheetName).Rows(lastLine)

 これは、貼り付け先を指定して、コピペするという 一つの作業を行っています。

(渡辺ひかる) 2019/11/22(金) 17:00


コメント返信:

[ 一覧(最新更新順) ]


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