gpt4 book ai didi

vba - 创建工作表,带有模板链接的新行 - 仅一步之遥

转载 作者:行者123 更新时间:2023-12-04 21:05:54 25 4
gpt4 key购买 nike

我正在尝试创建一个几乎完全自动化的测试模板。我快完成了!有几个项目让我有点头疼!我对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

谢谢你的帮助

最佳答案

您看到第二个 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 单步执行代码是查找意外结果(即第二个输入框)发生位置的好方法。

关于vba - 创建工作表,带有模板链接的新行 - 仅一步之遥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19456438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com