2016-11-10 6 views
0

VBA新規。私はVBAループコードを作成して一連のタブを実行し、各タブでコードを実行し、基本的にデータを「データベース」というワークシートの中央タブにエクスポートしようとしています。タブ固有のVBAループ

ユーザーが追加の「タスク」を追加できるように、 タスク、タスク(2)、タスク(3)、タスク(4)、タスク(5)という複数のタブがあります。 。など

マイVBAの用語は

-THENは、(その特定のタスク]タブで私のコードを実行します(「TASK」で始まる)がエクセルの基本的な用語で、私は

-IFタブ名にしようとしています、悪いですA2を開始NEW ROWへの私の「データベース」タブ内)

そのタブから-AND(ペーストユーザ入力データに)

うまくいけば、これは([タスク]タブが「データベース」タブのセルA2に貼り付けられます)理にかなっています(タスク(2)が "dat"のセルA3にペーストされるABASE」タブ) は、(シートの参照のように変更する必要があります 『』タスクに変更されますタスクは、(2)+タスクは、(3)など

だから次は私が示唆されてるものです
'My Code 
Sheets("Task").Select 
Range("A2").Select 
Range(Selection, Selection.End(xlDown)).Select 
Selection.Copy 
Sheets("Database").Select 
Range("A2").Select 
**'This will need to change each time I paste a new tab in (A2 > A3 > A4)** 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=True 
Sheets("External (Client) Output").Select 
+0

[セルの範囲をコピーして最初の空の行に貼り付けるより有効なコードの重複がありますか? Excel](http://stackoverflow.com/q/17972106/11683) – GSerg

答えて

0

: 1そのワークシートの名前がデータベースである場合。それがあれば、それは 3.(すなわち、そのワークシート内のデータを選択してスキップし、各ワークシート 2.チェックを繰り返します。それは意志あなたがそのタスクデータがに配置されている行を知っているように、データベースのワークシートのデータ(カウントを追跡するタスク1、タスク2、など) 4.貼り付けループスルー)

Dim row as Integer 
Dim ws as Range 
row = 2 
For Each ws In ThisWorkbook.Sheets 
    If (Not ws.Name = "Database") Then 
     With ws 
      .Range(Range("A2"), .Range("A2").End(xlDown)).Select 
      Worksheets("Database").Range(Cells(row, 1)).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=True 
      row = row + 1 
     End With 
    End If 
Next ws 
+0

他のシート、つまり「データベース」「要約」「クライアント出力」がある場合。私はちょうどそれらをNotラインに加えることができますか? – Alex

+0

はいあなたは、単にそれを変更することができます(未ws.Name =「データベース」ではなくws.Name =「概要」ではなくws.Name =「クライアントの出力」)場合 – cullan

+0

は、非常に多くのCullan – Alex

1

あなたが試すことができますこの

Option Explicit 

Sub main() 
    Dim ws As Worksheet 
    Dim iTab As Long 
    Dim baseRng As Range 

    Set baseRng = Worksheets("Database").Range("A2") 
    For Each ws In Worksheets 
     If Left(ws.Name, 4) = "TASK" Then 
      With ws 
       With .Range("A2", .Cells(.Rows.Count, 1).End(xlUp)) 
        baseRng.Offset(iTab).Resize(, .Rows.Count).Value = Application.Transpose(.Value) 
       End With 
       iTab = iTab + 1 
      End With 
     End If 
    Next ws 
End Sub 
+0

@Alex場合は、それを介して取得しましたか? – user3598756

関連する問題