事前にお手数おかけします。 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
しかし、私はそれを実行すると、それがコードを実行し、私が欲しいものをやっているように見えるとして、それは狂ったような画面が点滅しますが、コードはコンパイルが完了したとき何も保存されず、コードが実行されなかったように見えます。
申し訳ありませんが、これは良い説明ではない場合、より多くのコードが必要な場合は、私はできるだけ早くそれを提供することを喜んでより喜んでください。
私を助けることができたら本当にありがとう!
よろしく、 ブレイディ
私はより密接にあなたの説明を確認する必要がありますが、用"狂ったような画面を点滅する"部分は、あなたのサブの始めに 'Application.ScreenUpdating = FALSE'を使い、最後に' Application.ScreenUpdating = TRUE'を使うことができます。 – OldUgly
2番目のコードスニペットでは、 'cel.copy'は9 AMワークシートの列Aの1つのセルからコピーするだけです。そのセルの書式を9 AMワークシートのAからAFに行を引き伸ばして貼り付けています。私は、午前9時にAからAFにコピーして、午後12時のワークシートのAからAFに書式を貼りたいと思っています。 – OldUgly
あなたのご意見ありがとうございました! ScreenUpdatingコードをモジュールに追加しました。 また、セルA#で一致する値を持つ各行のA:AFセルの書式をコピーして、その書式だけを午後12時のシートに貼り付けることが正しいとします。 – Leokul