Sub CreateWorkSheetByRange() Dim WorkRng As Range Dim Ws As Worksheet Dim arr As Variant Dim template As Worksheet Dim xTitleId As String On Error Resume Next xTitleId = "Select Range" Set WorkRng = Application.Selection Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8) arr = WorkRng.Value Application.ScreenUpdating = False arr = WorkRng.Value Application.ScreenUpdating = False ' Create the Worksheet names based on range selected For i = 1 To UBound(arr, 1) For j = 1 To UBound(arr, 2) Set Ws = Worksheets.Add(after:=Application.ActiveSheet) Ws.Name = arr(i, j) Next Next Application.ScreenUpdating = True End Sub
1 ответ
0
Конечно, вы можете создавать имена рабочих листов, используя значения из ячеек Excel.
Используйте следующий код VBA
Sub CreateWorkSheetByRange() 'variable declaration Dim WorkRng As Range Dim Ws As Worksheet Dim arr As Variant Dim template As Worksheet '**Edit-2:Declared xTitleId** Dim xTitleId As String '**Edit-3:Declared i and j** Dim i as Variant Dim j as Variant 'Start of Program On Error Resume Next 'Specify the title of the dialog that requests for range xTitleId = "Select Range" ' Assign the application.selection function to the variable WorkRng Set WorkRng = Application.Selection ' Accept input from the user Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8) ' Create an array of the input values arr = WorkRng.Value ' The following line is optional Application.ScreenUpdating = False ' Create the Worksheet names based on range selected For i = 1 To UBound(arr, 1) For j = 1 To UBound(arr, 2) Set Ws = Worksheets.Add(after:=Application.ActiveSheet) Ws.Name = arr(i, j) Next Next Application.ScreenUpdating = True End Sub
Приведенный выше код позволяет вам выбрать диапазон ячеек, из которых вы хотите создать имена листов.
Вы можете в дальнейшем опираться на это и посмотреть, можете ли вы изменить это для своего сценария смены имен
К вашему сведению: я новичок в VBA ... но вы можете узнать это очень легко