Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 使用宏按钮根据主控图纸上的模板和列表添加新选项卡_Vba_Excel - Fatal编程技术网

Vba 使用宏按钮根据主控图纸上的模板和列表添加新选项卡

Vba 使用宏按钮根据主控图纸上的模板和列表添加新选项卡,vba,excel,Vba,Excel,我正在尝试创建一个宏按钮,该按钮根据a列“项目”选项卡中的列表添加一个新选项卡。但是,如果该选项卡已存在,则不会创建一个宏按钮并查找一个没有选项卡的任务。我使用的问题已经在这里提出()但我遇到了问题: 我使用了这段代码,但当我将一个新项目添加到上的a列的列表中时,一直出现运行时错误1004。我怎样才能更新主控表。我想要的是,当一个项目被添加到主选项卡中的A列时,我可以单击按钮并进行更新 当所有项目都列在A列中,然后我按下按钮时,代码会起作用,但一旦我添加了一个新项目,就会出现错误 我对代码进行了

我正在尝试创建一个宏按钮,该按钮根据a列“项目”选项卡中的列表添加一个新选项卡。但是,如果该选项卡已存在,则不会创建一个宏按钮并查找一个没有选项卡的任务。我使用的问题已经在这里提出()但我遇到了问题:

我使用了这段代码,但当我将一个新项目添加到上的a列的列表中时,一直出现运行时错误1004。我怎样才能更新主控表。我想要的是,当一个项目被添加到主选项卡中的A列时,我可以单击按钮并进行更新

当所有项目都列在A列中,然后我按下按钮时,代码会起作用,但一旦我添加了一个新项目,就会出现错误

我对代码进行了一些更新,以满足我的需要,但其内容如下:

Sub Add_Projet_Button()
    Dim masterSheet As Worksheet
    Dim hiddenSheet As Worksheet
    Dim NewSheet As Worksheet
    Dim myBook As Workbook
    Dim lastRow As Long
    Dim i As Long
    Dim namesColumn

    'Define your workbook - here set as the active workbook, assuming it contains 
    masterSheet and hiddenSheet
    Set myBook = ActiveWorkbook

    'Define your worksheets - The sheets are named "Master" and "Hidden" 
    respectively
    Set masterSheet = myBook.Worksheets("Projects")
    Set hiddenSheet = myBook.Worksheets("TEMPLATE")

    'Define which column in your master tab the list is - here it's A i.e. column 1
    namesColumn = 1

    'Find the last row of the sheets list
    lastRow = masterSheet.Cells(masterSheet.Rows.Count, namesColumn).End(xlUp).Row

    'Cycle through the list - Assuming the list starts in column "A" from the 2nd row
    For i = 3 To lastRow
        With myBook
            'New sheet
            Set NewSheet = .Worksheets.Add(After:=.Worksheets("Projects"))
        End With

        'Find name of the tab and naming the tab
        tabName = masterSheet.Cells(i, namesColumn)
        NewSheet.Name = tabName

        'Copy from hidden template - You can choose the ranges if predefined or use .Cells(r,c) to do something fancier
        hiddenSheet.Range("A1:BF950").Copy _
          Destination:=NewSheet.Range("A1:BF950")

        'Paste in e.g. cell A1 i.e. (1,1) the tab name
        NewSheet.Cells(2, 1).Value = tabName
    Next i
End Sub
有人能帮忙吗


谢谢

哪一行有错误?请注意,错误发生在第32行(NewSheet.Name=tabName)① 使用
Option Explicit
并声明所有变量,
tabName
未声明!② 图纸名称限制为31个字符。因此,您可能会使用类似于
NewSheet.Name=Left$(tabName,31)
的内容。很抱歉,这是一个新问题,但在将其更改为您的建议后,我仍然会在该行中看到错误?请更新您声明所有变量的代码。调试代码,一步一步地(用F8)检查它。发生错误时,
tabName
中的值是多少?确保它不包含图纸名称中不允许的任何字符
*/\[]:?