2017-02-08 7 views
-1

ワークシートoverviewにあるマクロを作成しようとしました。このワークシートはコピーしてTest 1に名前を変更する必要があります。概要ワークシートに戻ってマクロを再開すると、wsの新しい名前はTest 2となります。ワークシートをコピーしてカウントするExcel VBAマクロ

私は既にCountでソリューションを試していましたが、その場合は動作しません。現在、それは一度実行され、それがwsがすでに存在していると言う:

Sub CopyWs() 

Dim NewName As String 

ActiveSheet.Copy Before:=ActiveSheet 

NewName = "Test " & WsNo + 1 

WsNo = WsNo + 1 

ActiveSheet.Name = NewName 

End Sub 

答えて

0

私は、これはあなたが探しているものであるかどうかわからないんだけど、私は過去に同様の問題があったが、私は次のように使用しましたそれを解決する方法論。

Dim worksheetName As String 
    worksheetName = "Test 1" 
    worksheetNumber = 2 
    CheckName: 
     For Each ws in Sheets 
      ' If the desired worksheet name exists 
      If ws.name = worksheetName Then 
       ' Change the worksheetName to be Test x+1 and increment worksheetNumber 
       worksheetName = "Test " & worksheetNumber 
       worksheetNumber = worksheetNumber + 1 
       GoTo CheckName ' return to the CheckName label and start again 
      End If 
     Next ws 

基本的に、私たちは現在のワークブック内のすべてのワークシートをループさやって、そしてそれらのいずれかが、我々が挿入するものと同じ名前を持っているかどうかをチェックされています。もしそうなら、私たちは名前を新しい名前に変更してもう一度チェックします。そうでなければ、私たちは新しい名前を持っています。

EDIT:あなたがそうのように、簡単に目的の名前を変更することができるようにまた、私は、引数としてシート名をとる関数の内部で上記のコードを置くことをお勧め:

Function worksheetName(desiredName As String) As String 
     Dim worksheetName As String 
     worksheetName = desiredName 
     ' rest of code follows ... 
    End Function 

そしてそれができますそう呼ばれる:

NewName = worksheetName("Test") 
関連する問題