2017-10-30 1 views
-2

I 아니에요 매우 VBA 좋은,하지만 난 다음 달성하기 위해 노력하고있어 :복제 시트 이름을 명확 세포 - 엑셀 VBA

  • 나는 테이블 시트 (주 50)가 특정 정보.
  • 동일한 표가 인 새 시트 (주 51)를 만드는 버튼 (매크로)을 원한다면 내용 만 지워야합니다 (특정 셀 범위).
  • 표의 첫 번째 열은 이전 주 수식을 기반으로해야합니다. 이것이 매주 새로운 일에 어떻게 적응할 수 있습니까?

이전 주를 기준으로 시트를 복사하고 이름을 결정하려면 어떻게해야합니까? 그리고 어떻게 같은 매크로에서이 새 시트의 특정 셀을 지울 수 있습니까?

Sub New_Week() 
    Worksheets(ActiveSheet.Name).Copy After:=Worksheets(ActiveSheet.Name) 
End Sub 
+1

지울 내용의 범위는 무엇입니까? –

답변

0

이 코드는 변화 년 고려하지 않기 때문에 통합 문서에서 이미 52주 그것을 실행하는 경우는 행복하게 주 53, 54 만들고 그렇게됩니다

지금까지 난 그냥이 에.

현재 주를 선택하지 않아도 코드에서 Week xx이라는 시트를 기준으로 가장 높은 주 번호를 검색합니다.
D2 : G2 및 H5 : K8 범위를 삭제합니다. 'Week xx'!에 대한 시트의 모든 참조는 키보드에서 Ctrl+H을 누르는 것과 같은 방법으로 지난 주로 업데이트됩니다.

Sub CreateNewSheet() 

    Dim wrkSht As Worksheet 
    Dim lWkNum As Long 
    Dim lCurNum As Long 
    Dim sht_LastWeek As Worksheet 
    Dim sht_NewWeek As Worksheet 

    'Find previous week and set reference to it. 
    For Each wrkSht In ThisWorkbook.Worksheets 
     If IsNumeric(Replace(wrkSht.Name, "Week ", "")) Then 
      lCurNum = CLng(Replace(wrkSht.Name, "Week ", "")) 
      If lCurNum > lWkNum Then lWkNum = lCurNum 
     End If 
    Next wrkSht 
    Set sht_LastWeek = ThisWorkbook.Worksheets("Week " & lWkNum) 

    'Create new sheet, set reference to it and rename. 
    sht_LastWeek.Copy After:=Sheets(sht_LastWeek.Index) 
    Set sht_NewWeek = Sheets(sht_LastWeek.Index + 1) 
    sht_NewWeek.Name = "Week " & lCurNum + 1 

    'Clear the cells and relink formula to previous sheet. 
    With sht_NewWeek 
     .Range("D2:G2,H5:K8").ClearContents 
     .Cells.Replace What:="'Week " & lCurNum - 1 & "'!", _ 
         Replacement:="'Week " & lCurNum & "'!", _ 
         LookAt:=xlPart 
    End With 

End Sub