2012-03-02 6 views
2

1つの長いスプレッドシートを複数のシートに解析するコードを記述しようとしています。私は、パースコードが動作しているとコピーと貼り付けも動作します。しかし、ペーストはデフォルト幅でセルを作成するだけです。私はすべてのセルの書式をコピーする必要があります。つまり、セルの高さ、幅、背景色、前景色、境界線などです。その部分は実行時1004エラーを生成しています。以下は私のコードです:VBAを使用してExcel2010でセルの書式をコピーする必要があります

Sub SplitData() 

mycount = 0 
myrow = 0 

Do 
    mycount = mycount + 1 
    oldrow = myrow + 1 
    Sheets("Master").Select 

    Do 
     myrow = myrow + 1 
    Loop Until Left(Sheets("Master").Range("A" & myrow), 4) = "Run:" 

    Sheets.Add 
    ActiveSheet.Name = "Data" & mycount 
    Sheets("Master").Select 
    Rows(oldrow & ":" & myrow).Select 
    Selection.Copy 
    Sheets("Data" & mycount).Select 
    Range("A1").Select 
    ActiveSheet.Paste 
    ActiveSheet.PasteSpecial xlPasteFormats ' (THE ERROR OCCURS HERE) 
Loop Until Left(Sheets("Master").Range("A" & myrow + 1), 3) = "xxx" 

End Sub 

私は非常に経験豊富なVBAコーダーですが、Excel構文の完全な初心者です。誰かが私がこれを過ごすのを助けてくれる? 「xlPasteAll」属性も失敗します。これは最初に単一のPastSpecialメソッドを使用して試したものです。

任意のアイデアをいただければ幸いです!

おかげ

答えて

0

これは、物理的に動作しますが、何らかの理由で、それは実際に(セルサイズを書式設定をコピーしていないこの

Selection.Copy 
Sheets("Data" & mycount).Select 
With Range("A1") 
    .PasteSpecial xlValues 
    .PasteSpecial xlPasteFormats 
End With 

フォロー

をお試しください等)。フォントやテキストの色は大丈夫ですが、セルのサイズやマージされたセルや目に見えるボーダーはありません。

あなたがしようとしている何本か?

Sub SplitData() 
    Dim ws As Worksheet 

    mycount = 0 
    myrow = 0 

    Do 
     mycount = mycount + 1 
     oldrow = myrow + 1 
     Sheets("Master").Select 

     Do 
      myrow = myrow + 1 
     Loop Until Left(Sheets("Master").Range("A" & myrow), 4) = "Run:" 

     Set ws = Sheets.Add 
     ws.Name = "Data" & mycount 
     Sheets("Master").Rows(oldrow & ":" & myrow).Copy ws.Rows(1) 
    Loop Until Left(Sheets("Master").Range("A" & myrow + 1), 3) = "xxx" 
End Sub 
+0

これは物理的に動作しますが、何らかの理由で実際にフォーマット(セルサイズなど)をコピーしていません。フォントやテキストの色は大丈夫ですが、セルのサイズやマージされたセルや目に見えるボーダーはありません。 – DJOlson

+0

@DJOlson: –

+0

を更新しました。 cantのペーストコード。 – DJOlson

0

フォーマット後に範囲に.autofitを追加します。それはあなたの問題を整理すべきです。オートフィットは細胞を引き伸ばすので、細胞から「深い」細胞を得ることはできません。

関連する問題