Для выполнения следующих действий:

  1. Скопируйте конкретный шаблон-лист столько раз, сколько ячеек выбрано в основной базе данных.
  2. Создание рабочих листов (с именами) на основе выбранного диапазона ячеек
  3. На основе имени вновь созданного листа - обновите одну из ячеек
  4. Используйте функциональность VLOOKUP для извлечения других значений на основе ячейки, обновленной на шаге 3.

У меня есть следующий код VBA:

Sub CreateWorkSheetByRange()
'variable declaration
Dim WorkRng As Range
Dim Ws As Worksheet
Dim arr As Variant
Dim tws As Worksheet
'Start of Program
On Error Resume Next
'Specify the title of the dialog that requests for range
xTitleId = "Select Range"
' Assign template worksheet to a variable
Set tws = Worksheets("template")
' 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)
            tws.Copy after:=Worksheets(Sheets.Count)
            Set Ws = Application.ActiveSheet
            Ws.Name = arr(i, j)
        Next
    Next
' Application.ScreenUpdating = True
End Sub

Я хотел бы улучшить следующие вещи в моем коде - но не знаю, как

  1. Хотите знать, если код эффективен - или без ошибок
  2. Я хочу передать это группе инженеров - как я могу это сделать. Я не должен предполагать, что они знают, как использовать этот код в VBA - возможно ли дать это как исполняемый файл Excel?

0