2017-11-22 11 views
0

これを動作させるには問題があります。私はちょうど最初のシートの前に左から2番目のシートをコピーしたい。その後、ちょうど2番目のシートになったものから新しい最も左のシートに情報をコピーします。 SELECTION.Copyには、予想される変数がないことを示すエラーが表示されます。シートをコピーした後、コピーしたシートに別のシートの情報をコピーするためのvbaマクロ

Sub GenerateInvoice() 
    Sheets(2).Select 
    Sheets(2).Copy Before:=Sheets(1) 
    Sheets(2).Select 
    Range("H2:N2").Select 
    SELECTION.Copy 
    Sheets(1).Select 
    Range("E11").Select 
    SELECTION.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
End Sub 
+0

それは私が(2) – HalfWit

答えて

1

隠しシートまたは非ワークシートシート(チャートシートなど)はありますか?

あなたは、一般的にアクティブ化/選択を必要としません:

Sub GenerateInvoice() 
    Sheets(2).Copy Before:=Sheets(1) 
    With Sheets(2).Range("H2:N2") 
     Sheets(1).Range("E11").Resize(1, .Columns.Count).Value = .Value 
    End With 
End Sub 
+0

特定のシートの名前ではなく、シート(1)とシートを使用している場合、私はいっぱいに隠されたシートを持っている作品私は数量を入れることができ、数量の$$を生成します。しかし、私は数式をコピーする必要はありません、私はデータが必要です。基本的には、すべての進捗状況の内訳について請求書を生成しています。 – HalfWit

+0

そのコードは完全に機能しました。私はそれをもっと見て、それがどのように機能するか見る必要があります。それは私が使っているものよりはるかに効率的です。ありがとう! – HalfWit

+0

主なことは、値をコピーして貼り付けるだけの場合は、値を直接割り当てるほうがはるかに高速です。また、物事を選択しないことも大きな改善です:https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba?rq=1 –

関連する問題