2017-03-24 5 views
1

私のVBAに関する知識は、Nullに近いですが、目的に達するために変更できるコードが見つかりました。唯一のことは、このコードが "test"という名前のワークシートでのみ実行されていることです。このコードを同じファイルのすべてのワークシートに対して実行する必要があります。すべてのシートでVBAを実行しています

ありがとうございました。

Sub MyCopyPasteValues() 
' CopyPasteValus Macro 
' Macro to hard code last weeks data. 

Dim i As Byte, ws As Worksheet 

Set ws = Worksheets("test") 

For y = 7 To 24 

    For i = 3 To 4 

     If ws.Cells(y, 2).Value < ws.Range("K" & 7).Value Then 

      ws.Cells(y, i).Value = ws.Cells(y, i).Value 

     End If 

    Next i 

Next y 

End Sub 

答えて

2

これはそれを行う必要があります。

Sub MyCopyPasteValues() ' CopyPasteValus Macro ' Macro to hard code last weeks data. 
Dim i As Byte, ws As Worksheet 
For Each ws In Worksheets 
    For y = 7 To 24 
     For i = 3 To 4 
      If ws.Cells(y, 2).Value < ws.Range("K" & 7).Value Then 
       ws.Cells(y, i).Value = ws.Cells(y, i).Value 
      End If 
     Next i 
    Next y 
Next 
End Sub 
+0

はどうもありがとうございました。どちらの答えも素晴らしいです。 – Joao

+0

@ Ralph'sに行ってください。彼はより良い宣言などを含んでいます。彼は 'Next ws'を使っていて、後でそのコードをもっと簡単に読むことができます。 (私のコードは怠惰です) – CLR

1

を、私は、これはあなたが探しているものだと思い:

Option Explicit 

Sub MyCopyPasteValues() 
' CopyPasteValus Macro 
' Macro to hard code last weeks data. 

Dim ws As Worksheet 
Dim Y As Long, i As Long 

For Each ws In ThisWorkbook.Worksheets 
    For Y = 7 To 24 
     For i = 3 To 4 
      If ws.Cells(Y, 2).Value < ws.Range("K7").Value Then 
       ws.Cells(Y, i).Value = ws.Cells(Y, i).Value 
      End If 
     Next i 
    Next Y 
Next ws 

End Sub 
+0

ありがとうございました。どちらの答えも素晴らしいです。 – Joao

関連する問題