提问人:Sijam 提问时间:11/15/2023 最后编辑:Sijam 更新时间:11/18/2023 访问量:58
根据不同的变量对工作表名称运行两个不同的测试
To run two different tests on sheet names dependant on different variables
问:
我有单独的员工职责周表,有些表我不想公开。
我想使用宏将每周值班表按顺序发布到另一个多周电子表格上。
我还希望能够在对私人工作簿进行更改时更新这些工作表,从此公共工作簿中删除多余的工作表,并在完成后对其进行保护。
以下是我到目前为止所拥有的,我已经尝试了变体,但宏需要采取不同的操作,具体取决于周表是否已经存在以及是否有冗余表。 我可以让一些组合起作用,但不是全部。
我缺少哪些步骤或命令,或者我是否需要不同的方法?
Private Sub CommandButton1_Click()
'To set variables
Dim sht As Worksheet
'Current dated sheet
Dim sname As String
sname = Sheets("Calc").Range("C18")
'Prior dated sheet
Dim pname As String
pname = Sheets("Calc").Range("G18")
'Redundant dated sheet
Dim delname As String
delname = Sheets("Calc").Range("C33")
'To copy over sheet to Duty Sheets workbook
'To check if dated sheet exists
For Each sht In Workbooks("SCL Duties.xlsm").Worksheets
If sht.Name = sname Then
'Replace existing sheet with new one
Application.DisplayAlerts = False
Workbooks("SCL Duties").Sheets(sname).Delete
Application.DisplayAlerts = True
ThisWorkbook.Sheets(sname).Copy After:=Workbooks("SCL Duties.xlsm").Sheets(pname)
End If
'To check for redundant sheet and delete
If sht.Name = delname Then
Application.DisplayAlerts = False
Workbooks("SCL Duties").Sheets(delname).Delete
Application.DisplayAlerts = True
End If
Next sht
ThisWorkbook.Sheets(sname).Copy After:=Workbooks("SCL Duties.xlsm").Sheets(pname)
Application.DisplayAlerts = False
ThisWorkbook.Sheets(sname).Delete
Application.DisplayAlerts = True
End Sub
答:
0赞
Sijam
11/18/2023
#1
我发现我需要将两个不同的对象定义为工作表,然后我可以在工作簿中进行两次单独的搜索。
Dim sht As Worksheet
和
Dim shta As Worksheet
然后我可以使用进行两次搜索
For Each sht In Workbooks("SCL Duties.xlsm").Worksheets
和
For Each shta In Workbooks("SCL Duties.xlsm").Worksheets
评论