我编写了一个宏,该宏从Ranges
wS
中的每个wB
复制两个<> "TT"
并在Ranges
中设置相应的wS AMT
这些Ranges.
每个Range
中的第一个wS <> TT
复制到wS ATM
中的B列,并附加到B列中的第一个非空白单元格中。
每个Range
中的第二个wS <> TT
被复制到wS ATM
中递增的列中,如下所示:
ColumnD wS ATM = ColumnC Sheet3
ColumnE wS ATM = ColumnC Sheet4
ColumnF wS ATM = ColumnC Sheet5
此全部正常工作。
Dim sh As Worksheet
Dim TT As Worksheet
Dim AMT As Worksheet
Dim Last As Long
Set TT = ThisWorkbook.Worksheets("Tranche Tracker")
Set ATM = ThisWorkbook.Worksheets("Application Maturity Tracker")
For Each sh In ActiveWorkbook.Worksheets
If sh.Name <> TT.Name Then
Last = WorksheetFunction.Max(4, TT.Range("B" & Rows.Count).End(xlUp).Row + 1)
sh.Range("B4:B10000").Copy TT.Range("B" & Last)
End If
Next
TT.Range("B4:B10000").RemoveDuplicates Columns:=1, Header:=xlNo
End Sub
我的问题是我想排除wS AMT
和wS TT
。
我尝试过If sh.Name <> TT.Name Or ATM.Name Then
,这在逻辑上看似正确,但是它什么也没做,没有任何变化。我尝试了and/or
逻辑的一些变体,但似乎无法弄清楚。
我只是想排除wS ATM
和wS TT
。
答案 0 :(得分:2)
对于您来说,您可以做到
If sh.Name <> TT.Name and sh.Name <> ATM.Name Then
但是,如果要将其扩展到更多工作表,则可能要考虑使用Select Case
,即:
For Each sh In ActiveWorkbook.Worksheets
Select Case sh.Name
Case TT.Name, ATM.Name 'add as necessary
'do nothing
Case Else
Last = WorksheetFunction.Max(4, TT.Range("B" & Rows.Count).End(xlUp).Row + 1)
sh.Range("B4:B10000").Copy TT.Range("B" & Last)
End Select
Next