3

一連のワークシートのそれぞれから集計行をコピーするマクロがあります。集計行は、フォント/フォントの色/背景の色で特別にフォーマットされていますが、「集計シート」に貼り付ける場合は、書式設定せずに値を貼り付けるだけで済みます。

For LoopIndex = StartIndex To EndIndex
    ' start in a task sheet
    Sheets(LoopIndex).Select
    CopiedCells = ActiveSheet.Range("A156:L156").Copy

    ' now move to Summary sheet
    Sheets("Summary Sheet").Select
    ActiveSheet.Range("A8").Select
    ActiveCell.EntireRow.Insert

    ActiveCell.PasteSpecial Paste:=xlPasteValues
    ' tried variations of: ActiveCell.PasteSpecial paste:=xlValues, operation:=xlPasteSpecialOperationNone

    Application.CutCopyMode = False ' clears clipboard
Next LoopIndex

私が行ったすべての調査によると、PastSpecial、xlValues、xlPasteValues は機能するはずですが、書式設定を削除するものは何もありません。ここで何が間違っているのかわかりません。参照された値ではなく値を貼り付けるので、それは良いことです。ループ内のフォーマットをリセットするマクロがありますが、より効率的にしたいと考えています。エクセル2007を使用しています。

4

3 に答える 3

6

それは本当に奇妙です!

その理由は、コピー、挿入、および貼り付けを行っているためです。挿入、コピー、貼り付けを試してください。

'we must commence on the Summary Sheet
Sheets("Summary Sheet").Select
For LoopIndex = StartIndex To EndIndex

    ' insert the row before we start
    ActiveSheet.Range("A8").Select
    ActiveCell.EntireRow.Insert

    ' select the task sheet
    Sheets(LoopIndex).Select
    CopiedCells = ActiveSheet.Range("A156:L156").Copy

    ' now move to Summary sheet
    Sheets("Summary Sheet").Select

    ActiveCell.PasteSpecial Paste:=xlPasteValues
    ' tried variations of: ActiveCell.PasteSpecial paste:=xlValues, operation:=xlPasteSpecialOperationNone

    Application.CutCopyMode = False ' clears clipboard
Next LoopIndex

価値があるのは、コピーと貼り付けの使用に問題があったことです。つまり、マクロの実行中は、他のことはほとんどできません。

これは固定範囲であるため、次のことをお勧めします。

For LoopIndex = StartIndex To EndIndex
    Sheets("Summary Sheet").Range("A8").EntireRow.Insert
    For i = 1 To 12
        Sheets("Summary Sheet").Cells(8, i) = Sheets(LoopIndex).Cells(156, i)
    Next
Next
于 2009-10-23T03:04:14.580 に答える
4

範囲を選択したら、これを入れます

Selection.PasteSpecial 貼り付け:=xlPasteValues、操作:=xlNone

私にとってはうまくいきます:)

于 2013-07-12T07:42:58.103 に答える
4
ActiveSheet.Range("A1").EntireRow.Copy
ActiveSheet.Range("A2").EntireRow.PasteSpecial xlPasteValues
Application.CutCopyMode = False

また

ActiveSheet.Range("A2").EntireRow.Value = ActiveSheet.Range("A1").EntireRow.Value

A1 をソースに、A2 をターゲットに置き換えます。

于 2009-10-22T21:56:18.313 に答える