2016-11-03 16 views
0

あるシートから別のシートに特定のテーブルをコピーしたいと思います。これを行うために、私は次のコードを持っている:VBA - カスタムforループ

Dim start As Long 
Dim eind As Long 
Dim output As Long 
Dim tbl As Range 
Dim dest As Range 

output = 5 

For start = 3 To 224 Step 13 
     end = start + 10 
     Set tbl = Sheets("Model").Range("C" & start & ":E" & end) 
     Set dest = Sheets("Sheet1").Range("B" & output).Resize(tbl.Rows.Count, tbl.Columns.Count) 
     dest.Value = tbl.Value 
     output = output + 16 
Next start 

しかし、このコードをコピーし、「モデル」に「シート1」からすべてのテーブル。名前はA、B、C、E、G、H、J、Lの名前のテーブルが必要です(名前はD2、D15、D28、D41などです)。

for-loopの前にこれらの特定のテーブルを定義し、これをループに組み込む方法はありますか?あるいは、これを行う別の方法がありますか?

多くの感謝!

答えて

0

私はあなたのコードでの計算を通じてつもりはない...

(私はミスアライメントがあると思います:あなたはFor start = 3 To 224 Step 13からループにしたい、しかし、あなたはD2、D15、D28で名前を確認したいです。用

For start = 3 To 224 Step 13 
    end = start + 10 

    Select Case Sheets("Model").Range("D" & start - 1) ' I have "start -1" to adjust to rows 2, 15, 28, etc. 

     ' copy only Tables with the following names in Column D... 
     Case "A", "B", "C", "E", "G", "H", "J", "L" 
      Set tbl = Sheets("Model").Range("C" & start & ":E" & end) 
      Set dest = Sheets("Sheet1").Range("B" & output).Resize(tbl.Rows.Count, tbl.Columns.Count) 
      dest.Value = tbl.Value 

    End Select 

    output = output + 16 
Next start 
+0

感謝を:。だから、多分それだけで以下のコードを使用して、私はあなたがあなたのシートデータ構造を共有していなかったので)

をとにかく、ループ内で条件を追加することを確認していないFor start = 2 ....する必要があります返事、これは私が探していたものでした。ところで、ヘッダーを除いてテーブルの内容をコピーしたいだけなので、テーブル名がヘッダーにある間は、ミスアライメントはありません。 – Z117

+0

期待通りに動作しません。出力シートでは、このテーブルをコピーしないので、ソースシートにテーブルDが配置された空白が発生するためです。私はA、B、C、E、G、H、J、Lをお互いの真下に持っていたいと思います。私が言っていること理解してる? – Z117

+0

@LauZこれはあなたの投稿についてのものではありません。どちらのシート(シミュレーションされた入力と出力)のスクリーンショットも追加します。または、これを回答としてマークして、新しい投稿を開くことができます。それは他のユーザーにもそれに答えるチャンスを与えるでしょう。 –