2016-07-06 9 views
0

次のコードを作成して、入力に基づいていくつかのワークシートを作成し、名前を変更しました。文書を開くときには、「P-1」がテンプレートとして機能する「一般」および「P-1」という2つのワーキングシートがあります。ワークシートの数を作成して名前を変更します

問題は、マクロを開始して番号を入力すると、名前が既に割り当てられているというエラーが表示されることです。

Sub KlickME() 
Dim Rng As Range 
Dim WorkRng As Range 
Dim newName As String 
Dim convert As Integer 
Dim i As Integer 
Dim b As Integer 


newName = "P-" 


howMany = Application.InputBox("Many", "How Many", "", Type:=2) 
convert = CInt(howMany - 1) 



For i = 1 To convert 
    Sheets("P-1").Copy After:=Sheets("P-1") 

    For b = 1 To Application.Sheets.Count 
     Application.Sheets(b).name = newName & b 
    Next b 
Next i 


End Sub 

"一般"ワークシートなしでマクロを実行し、 "P-1"ワークシートのみを実行すると問題なく動作します。

+1

ステップとあなたの方法のエラーを参照してください。追加するシートごとに、すべてのシートをループして、すでに使用されている名前を割り当てます。内側のループを確認し、シートを作成するループの外側に移動します。 – teylyn

+0

なんて愚かな間違い、ありがとう! –

答えて

0

わかりましたので、関心のある皆様には、私はこの問題を解決しました。たぶんちょっと変わったかもしれませんが、それはやるべきことをしています。以下のコードを参照してください:

Sub KlickME() 
Dim Rng As Range 
Dim WorkRng As Range 
Dim newName As String 
Dim convert As Integer 
Dim i As Integer 
Dim b As Integer 

newName = "P-" 


howMany = Application.InputBox("Many", "How Many", "", Type:=2) 
convert = CInt(howMany - 1) 



For i = 1 To convert 
    Sheets("P-1").Copy After:=Sheets("P-1") 
Next i 

For b = 2 To Application.Sheets.Count 
     Set Sheet = ActiveWorkbook.Worksheets(b) 
     If Sheet.name <> "P-1" Then 
      Application.Sheets(b).name = newName & b - 1 
     End If 
Next b 

End Sub 
1

を私はあなたの新しいコードを取り、それが少し短く:コードを通じて

Sub KlickME() 

Dim howmany As Integer 
Dim i As Integer 

howmany = Application.InputBox("Many", "How Many", "", Type:=2) 

For i = 1 To howmany 

    Sheets("P-1").Copy After:=Sheets(Sheets.Count) 'Inserts sheet on last position 

    Sheets(Sheets.Count).Name = "P-" & i + 1 'renames sheet on last position 
Next i 
End Sub 
+1

nice :)ありがとう! –

関連する問題