创build工作表,新的行与模板链接 – 只有一步之遥

我正在尝试创build几乎完全自动化的testing模板。 我已经接近完成了! 有一些项目,使我轻微的头痛! 我对VBA非常陌生,我的理解非常粗糙,我知道如何复制和放置东西,并做一些小的修改等等。

我有一个5张的文件。 工作表如下所示:摘要,WTemplate(隐藏),ATemplate(隐藏),References(隐藏)和SummaryTemplate(隐藏)。 2个模板是必需的,因为它们是2种不同types的testing。 我在汇总表上有一个用于制作其中一个隐藏模板副本的button,它要求input新的表格名称(这是我想要的)。

接下来我需要的是创build这些表单时,我想要将一行添加到“汇总”表单中,该表单中包含所有需要的单元格链接。 我已经在SummaryTemplate表中设置了一行。 每个新行都应该添加到系列中的最后一行,即 – 有一个W-testing部分和一个下面的A-testing部分。

我可以做2个不同的button点击,但他们必须按特定的顺序,如果不是你得到一堆废话! 我正试图把这两个function放在一起。 我认为在创build行之前,表单创build必须以某种方式结束。 我还需要知道如何使用第一个问题的input来进行replace命令的更改(现在我已经创build了一个行,询问“您想链接哪个testing编号?”) – 我希望这个消失,只需使用1input)。

这里是2个button:

Private Sub NewWaterTest_Click() Sheets("WTemplate").Visible = True Sheets("WTemplate").Copy After:=Sheets("Summary") NewPageName = InputBox("What would you like to call your new Worksheet") ActiveWindow.ActiveSheet.Name = NewPageName Sheets("WTemplate").Visible = False End Sub Private Sub NextRow_Click() ActiveSheet.Unprotect Sheets("SummaryTemplate").Visible = True Worksheets("SummaryTemplate").Activate ActiveSheet.Rows(1).EntireRow.Select Selection.Copy Worksheets("Summary").Activate ActiveCell.Offset(1).Insert Sheets("SummaryTemplate").Visible = False Worksheets("Summary").Activate Sheets("Summary").Select Cells.Replace What:="WTemplate", Replacement:=InputBox("Which Test Number would you like to link?"), LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _ ReplaceFormat:=False ActiveSheet.Protect End Sub 

这是我试图想出来的(没有运气):

 Private Sub NewWaterTest_Click() ActiveSheet.Unprotect Sheets("WTemplate").Visible = True Sheets("WTemplate").Copy After:=Sheets("Summary") NewPageName = InputBox("What would you like to call your new Worksheet") Sheets("WTemplate").Visible = False Sheets("SummaryTemplate").Visible = True Worksheets("SummaryTemplate").Activate ActiveSheet.Rows(1).EntireRow.Select Selection.Copy Worksheets("Summary").Activate ActiveCell.Offset(1).Insert Sheets("SummaryTemplate").Visible = False Worksheets("Summary").Activate Sheets("Summary").Select Cells.Replace What:="WTemplate", Replacement:=InputBox(NewPageName), LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _ ReplaceFormat:=False ActiveSheet.Protect ActiveWindow.ActiveSheet.Name = NewPageName End Sub 

谢谢! 马特

我不知道在哪里发布新的更新或新的东西,我已经试过了:

我以为我懂了 现在给我一个

运行时错误“1004”:范围类的插入方法失败debugging将我发送到以下行:ActiveCell.Offset(1).Insert(即第12行代码)。 它看起来像这可能工作,因为它至less完成第一部分创build新的表格,并正确地重命名。 我认为这与在尝试引用新工作表之前未完成新工作表名称有关。

 Private Sub NewWaterTest_Click() Sheets("WTemplate").Visible = True Sheets("WTemplate").Copy After:=Sheets("Summary") NewPageName = InputBox("What is the new test number?") ActiveWindow.ActiveSheet.Name = NewPageName Sheets("Wtemplate").Visible = False ActiveSheet.Unprotect Sheets("SummaryTemplate").Visible = True Worksheets("SummaryTemplate").Activate ActiveSheet.Rows(1).EntireRow.Select Selection.Copy Worksheets("Summary").Activate ActiveCell.Offset(1).Insert Sheets("SummaryTemplate").Visible = False Worksheets("Summary").Activate Sheets("Summary").Select Cells.Replace What:="WTemplate", Replacement:=NewPageName, LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _ ReplaceFormat:=False ActiveSheet.Protect End Sub 

谢谢你的帮助

您看到第二个InputBox的原因是Replacement:=InputBox(NewPageName),因为这是调用一个提示等于您以前的select的InputBox。

 Sheets("Summary").Select Cells.Replace What:="WTemplate", Replacement:=InputBox(NewPageName), LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _ ReplaceFormat:=False 

如果你改变Replacement:=InputBox(NewPageName), Replacement:=NewPageName,我想你会发现它的工作原理,

这样它就使用你在第一个InputBox被调用时设置的NewPageName的内容。

PS:使用F8单步执行代码是一个很好的方法,可以find你意想不到的结果(即第二个input框)正在发生的地方。

是!!!!!!!!!!!!

有用!

 Private Sub NewWaterTest_Click() Sheets("WTemplate").Visible = True Sheets("WTemplate").Copy After:=Sheets("Summary") NewPageName = InputBox("What is the new test number?") ActiveWindow.ActiveSheet.Name = NewPageName Sheets("Wtemplate").Visible = False Worksheets("Summary").Activate ActiveSheet.Unprotect Sheets("SummaryTemplate").Visible = True Worksheets("SummaryTemplate").Activate ActiveSheet.Rows(1).EntireRow.Select Selection.Copy Worksheets("Summary").Activate ActiveCell.Offset(1).Insert Sheets("SummaryTemplate").Visible = False Worksheets("Summary").Activate Sheets("Summary").Select Cells.Replace What:="WTemplate", Replacement:=NewPageName, LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _ ReplaceFormat:=False ActiveSheet.Protect Worksheets(NewPageName).Activate End Sub