2017-01-13 1 views
0

이 코드를 사용하여 활성 시트를 삭제 한 다음 다른 시트를 복사합니다. 활성 시트 인덱스 번호를 저장하면 저장된 시트로 이동하는 데 사용할 수있는 방법은 무엇입니까? 색인 번호?Excel VBA 저장 시트 색인 번호 나중에 사용하기 위해

Master_Work_Order.Visible = True 


Dim oldSheetName As String 
Dim Ws As Worksheet 
Dim oldTabColor 
Dim oldSheetIndexNumber 

'Store 
oldSheetName = ActiveSheet.NAme 
oldTabColor = ActiveSheet.Tab.Color 
' oldSheetIndexNumber = Store active sheet index number 

ActiveSheet.Delete 

Master_Work_Order.Copy After:=Sheets(ActiveSheet.Index) 
Set Ws = ActiveSheet 

'set new copied sheet name to previous ActiveSheet's name 

Ws.NAme = oldSheetName 
Ws.Tab.Color = oldTabColor 
' Move active sheet to stored index number 


Master_Work_Order.Visible = 2 'Makes sheet very hidden 

답변

2

상황에 따라 적절합니다. 제한된 방법으로 만 테스트했습니다. .Copy 메서드는 새 워크 시트를 올바른 위치에 배치해야합니다.

Dim Ws As Worksheet 
Dim oldTabColor 
Dim oldSheetIndexNumber As Integer 

'Store 
oldSheetName = ActiveSheet.Name 
oldTabColor = ActiveSheet.Tab.Color 
oldSheetIndexNumber = ActiveSheet.Index 

ActiveSheet.Delete 

If ActiveWorkbook.Sheets.Count >= oldSheetIndexNumber Then 
    ActiveWorkbook.Sheets("Sheet2").Copy before:=Sheets(oldSheetIndexNumber) 
Else 
    ActiveWorkbook.Sheets("Sheet2").Copy after:=Sheets(oldSheetIndexNumber - 1) 
End If 
Set Ws = ActiveSheet 

'set new copied sheet name to previous ActiveSheet's name 

Ws.Name = oldSheetName 
Ws.Tab.Color = oldTabColor 
+0

'Master_Work_Order.Copy after : = Sheets (oldSheetIndexNumber - 1)'은 잘 작동하는 것처럼 보입니다. if 문의 내용은 확실하지 않습니다. – luke

+0

@luke 이전 시트 색인이 1 일 때 어떻게됩니까? if 문 때문입니다. – cyboashu

+0

@luke, cyboashu가 설명했다. 전후 어느 것도 모든 상황에서 작동하지 않습니다. – vknowles

관련 문제