2017-03-20 2 views
0

マスターと呼ばれる非表示のページをコピーするマクロを作成しようとしています。ユーザーがstartという名前のシート内のボタンをクリックすると、入力ボックスが開きます。新しいシート名を入力します。新しいシートは、startという名前のシートの後に配置されます。ユーザは、必要に応じて多くのシートを入力することができ、各シートは最後に配置される。入力ボックスには、キャンセルがクリックされた場合、無効なエントリと終了合計のエラーチェックが必要です。以下は私が持っているものです。それは動作しますが、開始後にシートの名前を変更するだけです。新しい名前の新しいシートを作成していません。おかげ隠されたマスターシートをコピーするマクロをExcelにブック名を付けてブックの末尾に置きます

Sub Button3_Click() 
Dim wb As Workbook: Set wb = ThisWorkbook 
    Dim ws As Worksheet: Set ws = wb.Sheets("Master") 
    Dim newws As Worksheet, sh As Worksheet, newname 
    Dim query As Long, xst As Boolean, info As String 

retry: 
    xst = False 
    newname = Application.InputBox("Enter Inmate Name and Number.", info, , , , , , 2) 
    If newname = "False" Then Exit Sub 
    For Each sh In wb.Sheets 
     If sh.Name = newname Then 
      xst = True: Exit For 
     End If 
    Next 
    If Len(newname) = 0 Or xst = True Then 
     info = "Sheet name is invalid. Please retry." 
     GoTo retry 
    End If 
    ws.Copy after:=ws 
    Set newws = ActiveSheet: newws.Name = sh 
End Sub 
+1

この記事を見てください!http://stackoverflow.com/questions/7692274/excel-vba-copy-sheet-and- get-sheets-sheet-object新しいシートの名前を正しく指定したら、必要なExcelファイルのどこにでも移動できます。 – Ralph

+1

ありがとう、これは動作します。私はこれを初めて知っています、ネットワークの人はプログラミングしていないので、これは私には全く新しいものです。もう一度、あなたが追加したものから学ぶことに感謝します。 –

答えて

0

これを行うことがあります...

Dim wb As Workbook: Set wb = ThisWorkbook 
    Dim ws As Worksheet: Set ws = wb.Sheets("Master") 
    Dim NewName As String: NewName = "" 
    Dim sh As Worksheet 

Retry: 
    NewName = Application.InputBox("Enter Inmate Name and Number.", info, NewName, , , , , 2) 
    If NewName = "False" Then Exit Sub 'user shoose 'Cancel' 
    For Each sh In wb.Sheets 
     If NewName = sh.Name Or NewName = "" Then 
      MsgBox "Sheet name is invalid. Please retry." 
      GoTo Retry 
      End If 
     Next sh 
    ws.Copy After:=ws 
    With wb.Sheets("Master (2)") 
     .Visible = True 
     .Activate 
     .Name = NewName 
     End With 
関連する問題