【问题标题】:VBA - variable worksheet name user definedVBA - 用户定义的变量工作表名称
【发布时间】:2016-09-30 09:18:02
【问题描述】:

想知道是否有人可以提供帮助,因为我已多次尝试在 excel 中创建此功能。

摘要 - 最终用户将适用的后部放置在工作表上指定单元格内的特定单元格中,然后按下宏按钮以复制去年的假期跟踪器并创建一个新工作表,随后重命名复制的工作表。

问题 - 尝试声明相关的适用工作表变量工作表名称时,出现类型不匹配错误。

如果有人可以提供帮助,请感谢?

下面的代码是声明有问题的工作表时的绊脚石。

Sub test()

Dim ws as worksheet
Dim wsn as string

wsn = sheets("procedures").range("a1").value
Set ws = wsn

ws.activate

End sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    哇,好啰嗦。

    将适用的后部放置在指定的特定单元格中 工作表上的单元格

    这是什么意思?

    您是否尝试添加工作表并使用单元格 A1 中的值命名它?
    如果 A1 包含可用作工作表名称的文本,这将完成这项工作。

    Sub test()
    
        Dim ws As Worksheet
    
        Set ws = ThisWorkbook.Worksheets.Add
    
        ws.Name = Sheets("procedures").Range("a1")
    
        ws.Activate
    
    End Sub
    

    编辑:
    此代码将复制在 A1 范围内命名的工作表,给它一个新名称并设置对它的引用。

    Sub test()
    
        Dim ws As Worksheet
        Dim wsn As String
    
        With ThisWorkbook
            wsn = .Worksheets("procedures").Range("a1")
            'Code to check the name is valid & the worksheet exists.
            '....
    
            'Unfortunately you can't set a reference while copying,
            'so copy it to before the first sheet and then reference the first sheet.
            .Worksheets(wsn).Copy Before:=.Worksheets(1)
            Set ws = .Worksheets(1)
        End With
    
        ws.Name = "Some Other Sheet Name"
    
        ws.Activate
    
    End Sub
    

    【讨论】:

    • 我认为 'rear' 是 'Year' 的拼写错误
    • 啊,是的,我现在明白了。 :)
    • 正确,大量错字!大声笑
    • 此时我需要编码的只是选择或激活用户定义的工作表并复制它。所以是的,单元格 A1 将包含相关工作表的名称。
    • 您是否有一个名为procedures 的工作表和一个可用作A1procedures 范围内的工作表名称的文本(错误-you typed an invalid name),或者是否已经有一个使用该名称的工作表(错误 - cannot rename sheet)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 2017-08-23
    相关资源
    最近更新 更多