我是VBA excel Macros的初学者。通过使用这个论坛,我可以写一个代码,但我被困在一个地方。
我在工作簿中有10张。 1st Sheet是我的输入工作表并完成所有计算。这些计算在后面的9张纸中提取。这9张纸生成我的报告。在计算文件中,我想隐藏所有接下来的9个文件并运行宏。一旦计算好了。我单击“生成报告”按钮,将创建新文件并在我的桌面上打开并保存在我的文档中。
问题 - 以某种方式通过这个论坛,我能够生成一个代码,可以做任何事情,但我无法隐藏和取消隐藏部分。 我编写的代码取消隐藏计算文件中的所有文件。(保持它们取消隐藏)并将文件隐藏在新生成的报告中。(因为所有文件都无法隐藏在任何新的Excel中,我得到运行时错误' 1004'无法设置工作表类的visible属性)。
这是我的代码请帮我解决 - 所以我只能在计算文件中有1张,而当宏工作时,其余的保持隐藏状态。新生成的文件将包含所有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
答案 0 :(得分:1)
建议你调整一下以确保封面首先存在。
如果是这样,可以更直接地设置隐藏工作表的循环 - 实际上并不需要然后测试。
Sub Sheeted()
Dim ws As Worksheet
On Error Resume Next
Set ws = Sheets("Cover")
On Error GoTo 0
If ws Is Nothing Then Exit Sub
For Each ws In ActiveWorkbook.Sheets
ws.Visible = (ws.Name = "Cover")
Next
End Sub
答案 1 :(得分:0)
尝试隐藏和取消隐藏这样的纸张,如果需要稍后更改,它将为您节省大量能源。
Dim ws As Worksheet
'To unhide all sheets
For Each ws In ActiveWorkbook.Sheets
ws.Visible = xlSheetVisible
Next
'To hide all sheets except "Cover"
For Each ws In ActiveWorkbook.Sheets
If ws.Name <> "Cover" Then
ws.Visible = xlSheetHidden
End If
Next
答案 2 :(得分:0)
谢谢你们 我有些如何通过反复试验和你的帮助弄明白了。 我只是把.close的东西放在我看到的这个组的某个地方。
以下是基于所有建议的修改后的代码。可能有一些不必要的东西但不知何故它有效。 非常感谢大家
Sub SaveMain()
Dim Flname As String
Dim ws As Worksheet
Application.EnableEvents = False
For Each ws In ActiveWorkbook.Sheets
ws.Visible = xlSheetVisible
Next
Flname = "Pump Datasheet-" & InputBox("Enter Pump tag No P-XXXX:") & ".xls"
Sheets(Array("Cover", "2", "3", "4", "5", "6", "7", "8", "9")).Copy
newfilename = Flname
With ActiveWorkbook
.SaveAs newfilename, FileFormat:=50
.Close 0
End With
For Each ws In ActiveWorkbook.Sheets
If ws.Name <> "Calculations" Then
ws.Visible = xlSheetVeryHidden
End If
Next
Application.EnableEvents = True
End Sub