隐藏除选定图纸外的所有图纸-Excel VBA
第一个帖子,所以请原谅任何不礼貌的行为 我正在编写一个VBA,它生成一个信息包供我们的客户使用。此软件包是基于某些用户选择动态构建的-例如,FAQ页面将特定于用户所做的选择。我构建了每个模块,以便在内容表运行时将相关的表名添加到内容表中。最后,我拿起这张表单列表,选择它们并生成PDF 我想做的是隐藏除所选图纸之外的所有其他图纸-我可以通过具体的名称来调用它们,或者在图纸名称的末尾添加“zzz”,这是纯参考图纸,但我希望有更好的方法 我想要的代码将执行以下操作:隐藏除选定图纸外的所有图纸-Excel VBA,excel,vba,Excel,Vba,第一个帖子,所以请原谅任何不礼貌的行为 我正在编写一个VBA,它生成一个信息包供我们的客户使用。此软件包是基于某些用户选择动态构建的-例如,FAQ页面将特定于用户所做的选择。我构建了每个模块,以便在内容表运行时将相关的表名添加到内容表中。最后,我拿起这张表单列表,选择它们并生成PDF 我想做的是隐藏除所选图纸之外的所有其他图纸-我可以通过具体的名称来调用它们,或者在图纸名称的末尾添加“zzz”,这是纯参考图纸,但我希望有更好的方法 我想要的代码将执行以下操作: 选择已添加到目录页的所有工作表,并
For Each cell In wsContents.Range("ContentsArray")
ContentsList(j) = cell.Value
wb1.Sheets(cell.Value).Select
j = j + 1
Next 'cell
wb1.Sheets(ContentsList()).Select
FileName = wsControl.Range("CustomerName") & " Pack " & Format(wsControl.Range("ReportDate"), "dd-mm-yyyy")
PDFFilePath = wb1.Path & "/AutoGenerated Packs/" & FileName & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=PDFFilePath, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
首先,您可以一次性将阵列设置为范围:
ContentsList=wsContents.Range(“ContentsArray”).Value
然后,您需要遍历工作簿中每个工作表的数组,以检查它是否存在。。。类似于下面的内容(如果您对数组使用与已有方法相同的方法,则需要另一种方法来确定j
(数组中的元素数)):
Dim ws As工作表
我想我会坚持多久
对于此工作簿中的每个ws。工作表
对于i=1到j
如果ws.Name=ContentsList(i),则
'如果找到,则退出,因为我们不想隐藏
退出
如果结束
'如果找不到,则隐藏
如果i=j,那么
ws.Visible=xlSheetHidden
如果结束
下一个j
下一个ws
希望这有帮助 您可以对循环使用
。此工作簿.Sheets中的每个职业安全与健康说明的内容如下:。这将遍历工作簿中的所有工作表(其中oSH
是工作表
对象)。然后,您可以检查阵列中是否存在oSH
,并根据结果决定要执行的操作。可能值得一读,我会使用集合
,而不是数组。此外,您不需要j
。你可以对数组使用UBound
,这非常完美-工作非常完美-我想我试图创建一种反向数组,这让事情变得过于复杂了,但是循环每个数组是有意义的。我让数组在整个范围内循环的原因是,我想将内容表也添加到列表中-在此之前的代码行是:{ContentsList(0)=“contents”j=1}@Zac如果您一次性映射数组,它将返回多维数组,因此您将无法使用UBound
。请查看