[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロでシート分け時の条件付き書式のコピー』(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.