2015-07-27 6 views
1

У меня есть пользовательская форма, которая вводит ввод пользователя для принятия определенных действий в рабочей книге, одно из действий - вставка новой вкладки в книгу и ввод имени пользователя в поле ввода , Я хочу, чтобы иметь возможность ссылаться на этот новый лист (но я не знаю, что кто-то еще может назвать его) и вставить объект диаграммы в только что созданный лист.Ссылка на недавно добавленный рабочий лист

До сих пор добавление кода листа работает нормально, но любые попытки вставить диапазон диаграмм не работают. Мой текущий код для добавления рабочего листа:

Private Sub MyChart_Click() 

Dim Answer As String 
Dim sht_name As Variant 

On Error Resume Next 

If Me.OptionButton2.Value = True Then 

Unload Me 

sht_name = InputBox("Please enter value") 

If sht_name <> "" Then 

Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = sht_name 

Else 

Exit Sub 

End Sub 

Мой график живет в другом листе («Лист2»), и я пытаюсь просто скопировать его в только что созданный лист каждый раз, когда пользователь выбирает этот OptionButton2 в UserForm. Любая помощь приветствуется.

+0

'Worksheets.Add' возвращает ссылку на только что добавленного листа, так что вы можете использовать это непосредственно' Dim SHT As WorkSheet: Set = SHT Worksheets.Add (...) ' –

ответ

2

Когда вы используете метод Worksheets.Add, этот лист активируется автоматически. Чтобы проверить это, вы можете запустить эту небольшую часть кода:

Option Explicit 

Private Sub SheetReference() 

     Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Test" 
     Debug.Print ActiveSheet.Name 

End Sub 

И выход вы видите это

Test

Так что в вашем случае, вы можете объявить переменную worksheet, а затем установите после того, как вы позвоните по телефону add method. Что-то вроде этого:

Option Explicit 

Private Sub MyChart_Click() 

     Dim Answer As String 
     Dim sht_name As Variant 
     Dim ws As Worksheet 

     On Error Resume Next 

     If Me.OptionButton2.Value = True Then 

     Unload Me 

     sht_name = InputBox("Please enter value") 

     If sht_name <> "" Then 

       Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = sht_name 
       Set ws = ActiveSheet 

       With ws 
         'Do whatever you need to do on the worksheet 
       End With 

     Else 

       Exit Sub 
     End If 

End Sub 
+0

Спасибо @JoshuaRoss. Я сталкиваюсь с трудностями в выборе диаграммы, размещенной на другом листе, и вставки ее в ActiveSheet. Если моя диаграмма «живет» на вкладке/листе под названием «Tab1», а диаграмма называется «Chart1», есть ли способ вставить ее в новый лист без активации листа, на котором находится диаграмма? – user3794203

+0

Да, есть, но это действительно то, что вы хотите? Если вы скопируете и вставьте диаграмму, график по-прежнему будет ссылаться на исходные данные. он не будет автоматически ссылаться на данные на новом листе. –

+0

Исправить. Исходные данные будут на листе с очень скрытыми данными, где я не хочу, чтобы пользователи могли изменять формулы. Я просто хочу, чтобы они увидели график. Возможно ли, если я переключу фокус с активного нового листа на лист, содержащий диаграмму? Благодаря! – user3794203

Смежные вопросы