我有一个包含多个工作表的工作簿,这些工作簿将被分成单独的站点智能工作表,但是工作簿也没有很少的工作表,这些工作表不是创建新工作簿所必需的。
例如Sheet1 =总体Sheet2 =员工表3 = Site1 Sheet4 = Site2 ....
现在我想为Sheet3创建新的工作簿(即Site1)& Sheet4(即Site2)
如果我只想排除其中一张(整体和工作人员)工作正常,但当我尝试排除两张纸时,我的if条件似乎无法正常工作。
以下是代码
{{1}}
P.S。具有OR条件的If语句导致问题。 语法是正确的,但是我无法理解if条件何时与它有OR条件,为什么它不检查条件。
答案 0 :(得分:3)
尝试切换到Select Case
,我认为它更容易理解,将来您还可以更灵活地添加更多工作表名称。
'For Each Sheet In Worksheets
For Each Sheet In ThisWorkbook.Worksheets ' Safer way to qualify the worksheets with the workbook where this code lies
Select Case Sheet.Name
Case "Overall", "Staff"
' do nothing
Case Else
Sheet.Copy
With ActiveWorkbook
With .ActiveSheet
[A1].Select
SheetName = ActiveSheet.Name
End With
.SaveAs Filename:=MyFilePath _
& "\" & SheetName & ".xlsx"
.Close SaveChanges:=True
End With
.CutCopyMode = False
End Select
Next
注意:我会将Sheet
更改为工作表对象的名称,并使用类似Sht
或ws
的内容。
答案 1 :(得分:2)
让我们检查你的表情:
If Sheet.Name <> "Overall" Or Sheet.Name <> "Staff" Then
Sheet.Name ==&#34;整体&#34;将 false 或 true 会导致 true
Sheet.Name ==&#34; Staff&#34;将导致 true 或 false 导致 true
的结果Sheet.Name ==&#34;还有别的&#34;将导致 true 或 true 导致 true
的结果我认为你喜欢和而非或
If Sheet.Name <> "Overall" And Sheet.Name <> "Staff" Then
Sheet.Name ==&#34;整体&#34;将 false 和 true 会导致 false
Sheet.Name ==&#34; Staff&#34;将导致 true 和 false 导致 false
的结果Sheet.Name ==&#34;还有别的&#34;将导致 true 和 true 导致 true
的结果