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 ... но вы можете узнать это очень легко
