2017-03-09 11 views
1

私はVBAの新しいもので、自分で学習します。私は、セル(E4、最後のワークシート)に数字を入力し、マクロを実行するときに、F2にあるその番号に一致するすべてのワークシートを検索し、その番号に一致するワークシートごとにコードを作成したいと思います。 (列である)範囲をコピーし、新しいワークシート(最後に追加)にすべての列を貼り付けます。私は以下のコードをさまざまな方法で試してみることがあります。他の問題の中でも、以下のコードの問題は、それが動作するときに1つの検索結果から1つの列のみをコピーすることです。これを書く(そしてそれを働かせる)より良い、よりエレガントな方法があれば、あなたの助けに感謝します。VBA:セルペースト範囲の値を含むすべてのワークシートから

Sub abc() 

Dim wscount As Integer 
Dim wb As Workbook 
Set wb = ActiveWorkbook 
wscount = wb.Worksheets.Count 
k = 1 
j = 1 

If Worksheets(k).Range("F2").Value = Worksheets(wscount).Range("E4").Value Then 
Worksheets(wscount + 1).Range(Cells(1, 1 + j), Cells(100, 1 + j)).Value = Worksheets(k).Range("F1:F100").Value 
Worksheets(wscount + 1).Range(Cells(1, 1 + j), Cells(100, 1 + j)) = Worksheets(k).Range("F1:F100").Value 

j = j + 1 

End If 

End Sub 

答えて

0

あなたは新しいシートを追加しておらず、シート間でループしていませんでした。これを行う方法は次のとおりです。

Sub abc() 
    Dim wscount As Integer: wscount = Worksheets.Count 
    Dim j As Long, k As Long 
    Worksheets.Add After:=Worksheets(wscount) 

    For k = 1 To wscount - 1 
     If Worksheets(k).Range("F2").value = Worksheets(wscount).Range("E4").value Then 
      j = j + 1 
      Worksheets(wscount + 1).Columns(j).value = Worksheets(k).Columns("F").value 
     End If 
    Next 
End Sub 
関連する問題