2016-07-11 3 views
-1

非常に古いマクロコードを最適化していて、シート「ソース」から「テスト」にデータをコピーし、その後、正しい宛先シート「概要」にデータをコピーすることは役に立たないことに気付きました。セル機能を使用してコピー&ペーストを取り除く方法ダブルループのExcel VBAでは?

余分なシート "Test"とSelection、CutCopyMode、et cetraを取り除く方法はありますか?

Dim i As Integer 
    Dim m, n As Integer 
    Rmin = Application.InputBox("Min row.") 
    Rmax = Application.InputBox("Max row.") 

    For i = Rmin To Rmax 
    For j = 1 To 99 
     Sheets("Source").Select 
     Cells(i, j).Select 
     Application.CutCopyMode = False 
     Selection.Copy 

     Sheets("Test").Select 
     Cells(1, j).Select 
     ActiveSheet.Paste 

    Next j 
     Sheets("Test").Select 
     Range("A1:PK1").Select 
     Selection.Copy 

     Sheets("Overview").Select 
     Range("A2").Select 
     ActiveSheet.Paste 

    Range("A3:I54").Select 
    Selection.Copy 
    Application.CutCopyMode = False 
    Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
    "C:\Users\...." & File & ".pdf" _ 
    , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _ 
    :=False, OpenAfterPublish:=False 

    Next i 
     Sheets("Source").Select 
     Cells(Rmax, 1).Select 

ありがとうございます!

追加。情報:マクロは、シート「ソース」の各ユーザー選択行のPDFを作成するために使用されます。その後、「概要」のデータフォーム選択がPDFの作成に使用されます。そして、私はVBA環境全体に新しいですが、私はベストを尽くしています。私はすでにApplication.ScreenUpdatingを使用して実行時間を短縮しています。長期的には、一般的には、いつでも以下の構文を使用して.paste/.copyコマンドを避けることができる場所コピーされるセル私には完全には明らかではない

+0

をスピード物事を助け、[コードレビュー](https://codereview.stackexchange.com/)はより良い場所です。選択の置換については、ここをクリックしてください:[Excelでの選択の使用を避ける方法](http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros) –

答えて

0

その:この場合

For i = Rmin To Rmax 
    For j = 1 To 99 
     Sheets("Overview").Cells(2,j).Value = Sheets("Source").Cells(i, j).Value 

    Next j 

左のセルの値を右のセルの内容と等しくなるように指定します。

敬具私はあなたが簡単にテストシートへの貼り付けを省略することができます見ることができるものから、

+0

ありがとうロット!私はこのようなものを試しましたが、失敗しました。今はすべてが問題ありません。 –

0

seulberg1。 これを試してみてください:

Dim i As Integer 
Dim m, n As Integer 
Rmin = Application.InputBox("Min row.") 
Rmax = Application.InputBox("Max row.") 

For i = Rmin To Rmax 
    Sheets("Source").Select 'Move to the source sheet 
    Range("A" & i & ":PK" & i).Select 'Select the row to copy 
    Application.CutCopyMode = False 
    Selection.Copy  'Copy the row 

    Sheets("Overview").Select 'Move to "Destination"-sheet 
    Range("A2").Select 'Paste source into A2 (for some reason) 
    ActiveSheet.Paste 

    Range("A3:I54").Select 'Select the are you want to create a pdf of 
    'And create the PDF... 
    Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
"C:\Users\...." & File & ".pdf" _ 
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _ 
:=False, OpenAfterPublish:=False 

Next i 'Move to next row in source sheet 

Sheets("Source").Select 'Move back to source 
Cells(Rmax, 1).Select  'Select the last cell. 

希望、これは最適化を必要とする作業コードの場合:)

+0

ありがとう!実行時間を80%削減しました。 :) –

関連する問題