2017-11-16 9 views
-1

ループを作成してワークブックを作成し、以下を実行します。 1.ワークシートの選択 2.選択したワークシートのセルの選択コピー 3.マスターまたは「ホーム」シートへのリターン 4.コピーした値をこのマスターシートの次の空の行に貼り付けます。 5.次のワークシートに移動して、もう一度プロセスを開始します。ワークシート間でコピー/ペーストをループする方法はありますか?

私はこのコードを次のコードで取得しようとしましたが、私はまだVBA、ループ、およびダイナミックレンジの選択が新しくなってしまいました。

Sub Create_One_Table() 

Dim wrksht As Worksheet 
Dim c As Range, rng 

For Each wrksht In ThisWorkbook.Worksheets 

    With wrksht 

      Range("BB2").Select 
      Range(Selection, Selection.End(xlToRight)).Select 
      Range(Selection, Selection.End(xlDown)).Select 
      Selection.Copy 
      Sheets("05").Select 
      Range("BB17").Select 
      Range("B" & Rows.Count).End(xlUp).Offset(1).Select 
      Sheets("05").Paste 
    End With 

Next wrksht 

End Sub 

私の質問は、最初に指定した操作を行うために上記のコードを変更するにはどうすればよいですか?上記のコードは、私が必要とする部分だけをコピーして貼り付ける(不完全であることを意味します)。どんな助けでも大歓迎です。私はこれまでこれまでに多くの時間を費やしてきました。ありがとう、

+0

ご質問はありますか?お読みください[お問い合わせ方法](https://stackoverflow.com/help/how-to-ask) –

+0

ポストに更新してください(うまくいけば)もっとクリアしてください – jules325

答えて

1

あなたの基本があるようです。私はいくつかのポインタがあります:

  1. .でそれらを起動することによってwithブロック、withオブジェクトのアクセスプロパティを使用して。下記のRangeコールを.Rangeに更新しました。 withブロックのRangeの最初の3つの使用法は、ループ内の各wrkshtを決して選択しないので、選択されたシートにアクセスしているためです。
  2. あなたの場所を保持するために.selectを使用する必要はありません。 Range(ref)を直接参照することができ、.endも一緒にチェーンすることができます。これにより、実行が大幅に高速化され、データを取得するシートに切り替える必要がなくなります。 1つのコマンドで選択範囲をコピーして範囲をどのようにコピーしたかを参照してください。
  3. Sheets("Master")などのシートのラベルを参照できます。私は彼らの数よりも簡単だと分かっています。

これを以下のコードに組み込みました。私はあなたのレイアウトを知らないので、実際にテストされていませんが、それが助けてくれることを願っています。

Sub Create_One_Table() 
Dim wrksht As Worksheet 
Dim c As Range, rng 
'Make sure "Master" is selected because this is the only one you need to select cells on (to paste) 
Sheets("Master").Select 
For Each wrksht In ThisWorkbook.Worksheets 
    With wrksht 
      .Range(.Range("BB2"), .Range("BB2").End(xlToRight).End(xlDown)).Copy 
    End With 
    Range("B" & Rows.Count).End(xlUp).Offset(1).Select 
    ActiveSheet.Paste 
Next wrksht 
End Sub 
+0

非常に感謝しています。私は "ActiveSheet.Paste"と言われてもエラーがあるようです。 「WorksheetクラスのPasteメソッドが失敗しました。 – jules325

関連する問題