2017-01-13 10 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後:=シート(oldSheetIndexNumber - 1)'あなたが持っているもののためにif文イムわからない、正常に動作するように見えます。 – luke

+0

@luke古いシートインデックスが1の場合はどうなりますか?だからこそif文。 – cyboashu

+0

@luke、cyboashuに説明がありました。前も後もすべての状況下で動作しません。 – vknowles

関連する問題