Я ищу код Excel VBA для автоматического дублирования вкладки 1 в книге, когда таблица на вкладке 2 заполнена именем - PullRequest
0 голосов
/ 04 февраля 2020

Необходим код VBA:

У меня есть 2 вкладки в рабочей книге. Вкладка 1 (DIST «A») является отформатированной электронной таблицей, а вкладка 2 (RFP) содержит таблицу со столбцом «Распространитель». Когда я ввожу имена в список распространителей, это могут быть имена 1 или 30, отличающиеся rnet, я хочу, чтобы VBA автоматически дублировал вкладку 1, переименовал дублированный лист на любое введенное имя и отправил его в конец рабочей книги.

Вот мой текущий код, он дублирует АКТИВНЫЙ ЛИСТ, Tab 2, а не Tab 1 (что мне нужно)

Sub Copyrenameworksheet()

Dim ws As Worksheet
Set wh = Worksheets(ActiveSheet.Name)
ActiveSheet.Copy After:=Worksheets(Sheets.Count)
If wh.Range("A1").Value <> "" Then
ActiveSheet.Name = wh.Range("A1").Value
End If
wh.Activate
End Sub

1 Ответ

0 голосов
/ 04 февраля 2020

Помимо очень красивой документации, предоставленной BigBen, вы можете посмотреть Учебное пособие по изменению рабочего листа .

Это пошаговое введение должно быть немного проще для понимания.


В основном то, что должно быть сделано, может быть следующим:

  1. Используя метод «Пересечение» из кода в учебнике / документации, проверьте, не был ли ваш список изменен.
  2. Проверьте, существует ли добавленный рабочий лист [необязательно]
  3. Дублируйте рабочий лист и установите его name to Target.Value

Поместите следующий код в объект листа для листа «RFP» (см. учебник, на который я ссылаюсь). Замените диапазон "A1: A3" диапазоном вашего списка дистрибьюторов. При вводе нового распространителя должно появиться окно сообщения с именем распространителя.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A1:A3")) Is Nothing Then
        Application.EnableEvents = False


            MsgBox (Target.Value)


        Application.EnableEvents = True
    End If
End Sub

Теперь напишите код, который дублирует рабочий лист и меняет его имя на Target.Value и, в основном, все, что вам нужно сделать. это поставить его вместо MsgBox.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...