2017-06-26 11 views
0

このコードを短縮してタスクを繰り返すにはどうすればよいですか?このコードは27人以上のユーザーのために実行する必要があります。あなたは、ループに取り組む、またはコードの短縮を開始する前にリピート/ループによるVBAコードの短縮


Workbooks.Open ("https://blabla/Edgars/2017 Q3Q4/Edgars.xlsx") 
Workbooks("Edgars.xlsx").Activate 

Range("C24:AN27").Select 
Selection.Copy 
Workbooks("abc.xlsx").Activate 
Sheets("Edgars").Activate 
Range("C24:AN27").Select 
ActiveSheet.Paste 
Workbooks("Edgars.xlsx").Activate 
Sheets("Edgars").Activate 
Range("C33:AN36").Select 
Selection.Copy 
Workbooks("abc.xlsx").Activate 
Sheets("Edgars").Activate 
Range("C33:AN36").Select 
ActiveSheet.Paste 
Workbooks("Edgars.xlsx").Activate 
Sheets("Edgars").Activate 
Range("C42:AN45").Select 
Selection.Copy 
Workbooks("abc.xlsx").Activate 
Sheets("Edgars").Activate 
Range("C42:AN45").Select 
ActiveSheet.Paste 

Workbooks("Edgars.xlsx").Activate 
Sheets("Edgars").Select 
ActiveWindow.SelectedSheets.Delete 
Workbooks("abc.xlsx").Activate 
Sheets("Edgars").Select 
Sheets("Edgars").Copy Before:=Workbooks("Edgars.xlsx"). _ 
    Sheets(1) 
Workbooks("Edgars.xlsx").Activate 
Range("A1").Select 
ActiveWorkbook.SaveAs Filename:="https://blabla/Edgars/2017 Q3Q4/Edgars.xlsx" 
ActiveWorkbook.Close 
Workbooks("abc.xlsx").Activate 
Worksheets("TOOLS").Activate 

Application.DisplayAlerts = True 
Else 
End If 

+0

コードの目的を簡単に説明する(および/またはコメントを追加する)いくつかの情報を追加する必要があります。また、私には、あなたが「ショートニング」を意味するかどうかは分かりません。複数のファイルがありますか?コードを実行する必要がありますか?もしそうなら、何らかの命名構造がありますか? – Noceo

+1

https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros –

+0

正確に何時間くらいですか?コードを実行するか、コード内の値を適合させる?任意の種類のループを使用することは、実行速度の顕著な変化をもたらさない可能性が非常に高い。 –

答えて

1

...私は今、総noobのだけど、これは毎日時間以上のための私の作業負荷を緩和するだろうVBA内でSelectActivateを避けてブラッシュアップしたいと考えています。あなたのコードは、現在の形で、多くの暗黙の関係を使用しているため、読み込みや改善が困難です。例えば

Application.Workbooks("Edgars.xlsx").Activate 
ActiveWorkbook.Sheets("Edgars").Activate 

とに変更することができます:

Workbooks("Edgars.xlsx").Activate 
Sheets("Edgars").Activate 

は、実際にはもちろん

Application.Workbooks("Edgars.xlsx").Worksheets("Edgars").Activate 

、このdoesntのは、「あなたにActivate問題を解消し、 'Edgars.xlsx'が開いているブックでない場合は間違いなく問題が発生します。この例ではを解決することはありませんあなたの問題を解決する、それは正しい方向にあなたを指すことを意味しています。

ActivateSelectおよび暗黙の(修飾されていない)参照を使用しないようにコードをリファクタリングすると、文字列変数を使用して自分自身を開始できます。このようなものは、有効なコードです:

Dim UserName as String 
UserName = "Edgars" 
Application.Workbooks(UserName & ".xlsx").Worksheets(UserName).Activate 

これは、コードの柔軟性を高め、一歩近づけます。

ここから始めてください:How to avoid using Select in Excel VBA macros。この記事を読んだら、コード内でこれらのステップを実装してみてください。その後、もう一度お読みになり、もう一度お試しください。

あなただけの1以上のためにExcelを使用と仮定すると(適切を学ぶVBAは、時間の投資のビットがかかりますが、あなたもVBA をコーディングする方法を学ぶことができればあなた自身だけの時間よりもはるかに多くの時間を節約することができますプロセス)。

運が良かった!

+0

クール、これはすでに私に何かを働かせます。よかった、ありがとう! –

+0

質問に回答したことを忘れないでください。私は助けることができてうれしいです:)。 –