2

我正在尝试创建一个几乎完全自动化的测试模板。我快完成了!有几个项目让我有点头疼!我对VBA真的很陌生,我的理解很粗略,我知道如何复制和放置东西,并做一些小修改等......

我有一个文件,里面有 5 张纸。这些工作表列出如下:Summary、WTemplate(隐藏)、ATemplate(隐藏)、References(隐藏)和 SummaryTemplate(隐藏)。这 2 个模板是必需的,因为它们是 2 种不同类型的测试。我在摘要表上有一个按钮,用于制作其中一个隐藏模板的副本,它要求输入新表的名称(这是我想要的)。

我需要的下一件事是在创建这些工作表时,我希望将一行添加到摘要工作表中,其中包含所需的所有单元格链接。我已经在 SummaryTemplate 表中设置了一行。每个新行都应添加到其系列的最后一行下方,即 - 有一个用于 W 测试的部分,一个用于 A 测试的部分。

我可以通过两次不同的按钮点击来做到这一点,但是它们必须按照特定的顺序完成,否则你会得到一堆废话!我正在尝试将这两个功能放在一起。我认为工作表创建必须在行创建开始之前以某种方式结束。我还需要知道如何使用第一个问题的输入来更改替换命令(现在我有行创建询问“您想链接哪个测试编号?” - 我希望这个消失并且只需使用 1 输入)。

这是2个按钮:

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”:范围类的插入方法失败调试将我发送到以下行:ActiveCell.Offset(1).Insert(即第 12 行代码)。看起来这可能有效,因为它至少完成了第一部分以创建新工作表并正确重命名它。我认为这与在尝试引用新工作表之前未完成新工作表名称有关。

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

谢谢你的帮助

4

2 回答 2

0

您看到第二个 InputBox 的 Replacement:=InputBox(NewPageName),原因在于,它正在调用 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,我认为您会发现它有效,

这样,它使用 NewPageName您在调用第一个 InputBox 时设置的内容。

PS:使用 F8 单步执行代码是查找意外结果(即第二个输入框)发生位置的好方法。

于 2013-10-19T09:39:34.497 回答
0

是的!!!!!!!!!!!!

有用!

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
于 2013-10-21T20:09:20.287 回答