2016-04-06 5 views
0

事前にお手数おかけします。 Excel 2016では、午前9時、午後12時、および午後330時というラベルの3枚のブックがあります。 私は各行に値とフォーマットを設定したAからAFまでの列を持っています。 今、StackOverflowに関するいくつかの調査の後で、最後に見つかった値までのシート9amの列Aの値を検索し、そのセルの書式設定とともにその値をコピーするマクロを見つけました。残りの値行セルの最大値(列AFまで)を12pmシートに入力します。 コードを以下に示し:コピーするマクロのみ異なるシートで一致した値の書式設定

Private Sub CopyDataAndFormat12pm() 
Dim NewDataRng As Range 'For 12pm 
Dim cel As Range 'For 12pm 
Dim OldDataRng As Range 'For 9am 
Dim MatchingValueCell As Range 'For 9am 
Dim lastrow As Long 

With Sheets("9am") 
    lastrow = .Cells(Rows.Count, 1).End(xlUp).Row 
    Set NewDataRng = .Range("A2:A" & CStr(lastrow)) 
End With 

With Sheets("12pm") 
    lastrow = .Cells(Rows.Count, 1).End(xlUp).Row 
    Set OldDataRng = .Range("A2:A" & CStr(lastrow)) 
End With 

For Each cel In NewDataRng 
    Set MatchingValueCell = OldDataRng.Find(What:=cel.Value, _ 
    After:=OldDataRng.Cells(OldDataRng.Cells.Count)) 
    If Not MatchingValueCell Is Nothing Then _ 
    cel.Resize(1, 8).Copy MatchingValueCell 

Next cel 
End sub 

これは私がまた私達の午後12時のレポートの値の最新のリストを貼り付けマクロを持っていることを除いて、素晴らしい作品と、自動的に私のためにそれをフォーマットし、午後12時のシートはのための新しい値を有することができますいくつかの列(特に列C、I、J、K)と私は新しい値を保持する必要があります。 基本的には、このコードを修正して、行の書式設定(各行の列A:AFの場合のみ)を新しい午後12時のシートに貼り付け、一致する値を見つけます。 私はコードを変更しようとしている:

For Each cel In NewDataRng 
    Set MatchingValueCell = OldDataRng.Find(What:=cel.Value, _ 
    After:=OldDataRng.Cells(OldDataRng.Cells.Count)) 
    If Not MatchingValueCell Is Nothing Then _ 
    cel.Copy 
    cel.Resize(1, 31).PasteSpecial Paste:=xlPasteFormats 

しかし、私はそれを実行すると、それがコードを実行し、私が欲しいものをやっているように見えるとして、それは狂ったような画面が点滅しますが、コードはコンパイルが完了したとき何も保存されず、コードが実行されなかったように見えます。

申し訳ありませんが、これは良い説明ではない場合、より多くのコードが必要な場合は、私はできるだけ早くそれを提供することを喜んでより喜んでください。

私を助けることができたら本当にありがとう!

よろしく、 ブレイディ

+0

私はより密接にあなたの説明を確認する必要がありますが、用"狂ったような画面を点滅する"部分は、あなたのサブの始めに 'Application.ScreenUpdating = FALSE'を使い、最後に' Application.ScreenUpdating = TRUE'を使うことができます。 – OldUgly

+0

2番目のコードスニペットでは、 'cel.copy'は9 AMワークシートの列Aの1つのセルからコピーするだけです。そのセルの書式を9 AMワークシートのAからAFに行を引き伸ばして貼り付けています。私は、午前9時にAからAFにコピーして、午後12時のワークシートのAからAFに書式を貼りたいと思っています。 – OldUgly

+0

あなたのご意見ありがとうございました! ScreenUpdatingコードをモジュールに追加しました。 また、セルA#で一致する値を持つ各行のA:AFセルの書式をコピーして、その書式だけを午後12時のシートに貼り付けることが正しいとします。 – Leokul

答えて

0

私はに対してこれをテストするために任意のデータを持っていないが、次のような何かをしようと...

For Each cel In NewDataRng 
    Set MatchingValueCell = OldDataRng.Find(What:=cel.Value, _ 
    After:=OldDataRng.Cells(OldDataRng.Cells.Count)) 
    If Not MatchingValueCell Is Nothing Then _ 
    Sheets("9am").Rows(MatchingValueCell.Row).Copy 
    Sheets("12pm").Rows(cel.Row).PasteSpecial Paste:=xlPasteFormats 
Next cel 
+0

私はその修正をテストしましたが、実際にはうまくいくと興奮していましたが、うまくいきませんでした。 A列セルの値と一致しないものと、12pmシートで一致するものがあるフィルの書式設定が終了しました。 – Leokul

関連する問題