引用最近添加的工作表

时间:2015-07-27 19:45:52

标签: excel vba excel-vba charts userform

我有一个userform,用于表示用户输入以在工作簿中执行某些操作,其中一个操作是在工作簿中插入新选项卡,并让用户在其中输入新工作表的名称一个输入框。我希望能够引用这个新工作表(但我不知道其他人可能会命名它)并在新创建的工作表中粘贴图表对象。

到目前为止,添加工作表代码工作正常,但我尝试粘贴图表范围的任何尝试都无效。我目前添加工作表的代码是:

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

我的图表存在于另一个工作表(&#34; Sheet2&#34;)中,每当用户在Userform中选择此OptionButton2时,我都会尝试将其复制到新创建的工作表中...感谢任何帮助。< / p>

1 个答案:

答案 0 :(得分:3)

使用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