2014-12-27 3 views
0

다음 코드를 사용하여 동일한 값을 복사하여 붙여 넣는 모든 워크 시트를 반복합니다.VBA를 사용하여 Excel에서 여러 시트에 복사하여 붙여 넣기

문제는 내 코드가 변경 사항을 활성 시트에만 적용한다는 것입니다.

Sub Button4_Click() 

Dim WS_Count As Integer 
     Dim I As Integer 
     WS_Count = ActiveWorkbook.Worksheets.Count 

     ' Begin the loop. 
     For I = 1 To WS_Count 

    Range("C10").Select 
    Selection.Copy 
    Range("C11:C300").Select 
    ActiveSheet.Paste 
    Range("C10").Select 

     Next I 


End Sub 

코드를 루프의 모든 시트에 적용하도록 구성하려면 어떻게해야합니까?

감사

답변

0

편집 : 난 당신이 예를 쓰기 때문에 하드을하려고 정확히 알고 해달라고하지/않았다.

이 코드 이어야합니다. 통합 문서의 모든 시트에서 Sheet1! C10의 값을 C11 : C300으로 복사하십시오. (시트 1 자체 포함). 나는 그것을 시험하지 않았다.

Sub Button4_Click() 

Dim WS_Count As Integer 
Dim I As Integer 
WS_Count = ActiveWorkbook.Worksheets.Count 

Dim Source As Range 

Set Source = ThisWorkbook.Worksheets(1).Range("C10") 

' Begin the loop. 
For I = 1 To WS_Count 

    ThisWorkbook.worksheets(i).Select ' just select the sheet 
    Source.Copy  
    Range("C11:C300").Select 
    ActiveSheet.Paste 

Next I 

End Sub 

시트 및 셀을 선택하면 잘 작동하지만 시트 개체를 사용하면 더 쉬울 수 있습니다.

예 :

Dim A_Sheet As Worksheet: Set A_Sheet = ThisWorkbook.Worksheets("Sheet1") 
A_Sheet.Cells(1,1).Value = "Example" ' set Sheet1!A1 to "Example" 
A_Sheet1.Range("A1").Value = "Example" ' another way of doing it 

그것의 처음을 선택하지 않고 모든 시트의 데이터에 액세스 할 수있는 좀 더 쉽게.

+0

고맙지 만 문제는 도움이되지 않습니다. 내 코드가 작동하지 않아 모든 변경 사항이 활성 시트에 적용됩니다. 내 루프의 모든 시트에 대해 복사 및 붙여 넣기를 수행하는 방법을 파악하려고합니다. – user3580480

+0

VBA에서 시트를 식별하는 데 사용되는 코드 네임이기 때문에 'Sheet1'을 변수로 사용하면 안됩니다. 이로 인해 코드 디버깅, 특히 'Sheet1'개체로 혼동이 발생할 수 있으며 "Sheet1"해당 이름 가진 워크 시트 VBA 같은 시트 수 없기 때문에 'Sheet1'더 이상 인덱스를 가진 시트를 참조합니다. '1' –

+0

좋은 지적이지만, 그것은 단지 예일뿐입니다. 변경 될 것입니다. – NickSlash

1

워크 시트 변수와 For Each 루프를 사용하여 워크 시트를 통해 루프를 반복하거나 아무 것도 선택하지 않아도됩니다. 또한이 시나리오에서 아무 것도 선택하거나 Copy/Paste 명령 을 사용할 필요가 없습니다. - 직접 값을 할당 할 수 있습니다. 아래 참조 :

Sub Button4_Click() 

Dim wsVar As Worksheet 

For Each wsVar In ThisWorkbook.Sheets 
    With wsVar 
     .Range("C11:C300").Value = .Range("C10").Value 
    End With 
Next wsVar 

End Sub