【发布时间】:2016-05-25 21:51:44
【问题描述】:
我是 VBA excel 宏的初学者。通过使用这个论坛,我可以编写代码,但我被困在一个地方。
我的工作簿中有 10 张工作表。第一张表是我的输入工作表并进行所有计算。这些计算被拉到后面的 9 张纸中。这 9 个工作表生成我的报告。在计算文件中,我想隐藏所有接下来的 9 个文件并运行宏。一旦计算好了。我单击“生成报告”按钮,新文件被创建并在我的桌面上打开并保存在我的文档中。
问题 - 不知何故,通过这个论坛,我能够生成一个可以做所有事情的代码,但我无法隐藏和取消隐藏部分。 我编写的代码从计算文件中取消隐藏所有文件。(保持它们取消隐藏)并将文件隐藏在新生成的报告中。(因为所有文件都不能隐藏在任何新的 excel 中我得到运行时错误'1004'无法设置工作表类的可见属性)。
这是我的代码,请帮我解决它 - 所以我在计算文件中只能有一张工作表,而当宏工作时其余部分保持隐藏。并且新生成的文件将包含所有 9 个选项卡。
Sub SaveMain()
Application.EnableEvents = False
Sheets("Cover").Visible = True
Sheets("2").Visible = True
Sheets("3").Visible = True
Sheets("4").Visible = True
Sheets("5").Visible = True
Sheets("6").Visible = True
Sheets("7").Visible = True
Sheets("8").Visible = True
Sheets("9").Visible = True
Dim Flname As String
Flname = "Pump Datasheet" & InputBox("Enter Pump tag No P-XXXX:") & ".xls"
Sheets(Array("Cover", "2", "3", "4", "5", "6", "7", "8", "9")).Copy
Sheets("Cover").Visible = False
Sheets("2").Visible = False
Sheets("3").Visible = False
Sheets("4").Visible = False
Sheets("5").Visible = False
Sheets("6").Visible = False
Sheets("7").Visible = False
Sheets("8").Visible = False
Sheets("9").Visible = False
newfilename = Flname
With ActiveWorkbook
.SaveAs newfilename, FileFormat:=50
End With
Application.EnableEvents = True
End Sub
【问题讨论】:
-
不明白。您希望它隐藏在哪个工作簿中?
-
您至少需要一张可见的纸。在您的代码中,接近尾声时,您将所有工作表都设置为隐藏。尝试将“Cover”设置为 True。
-
我的父文件有(计算文件+9其他表)。这 9 个工作表是隐藏的,但 9 个隐藏文件从计算文件中获取数据。一旦我的计算文件完成,我点击生成报告。它创建有 9 张纸并且不再有计算文件的新文件。这 9 张来自父文件(我希望它们都在新文件中可见,但在父文件中保持隐藏)。我的宏取消隐藏父表中的 9 个文件(我不想要)。并将文件隐藏在新生成的文件中(我也不想要)。所以它确实与我想要的两者相反。
-
您在说“工作表”和“文件”之间切换……请问哪个是?在您的代码运行到 Unhide 然后隐藏后,您再也不会保存原始工作簿 - 您执行 SaveAs - 这会创建一个新工作簿。首先是简单的部分:在上面的代码中,去掉所有 ....Visible = False 代码行。这将导致您的新工作簿工作表可见。