如何从此功能中排除其他工作表?

时间:2019-04-05 16:55:42

标签: excel vba

我编写了一个宏,该宏从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 AMTwS TT

我尝试过If sh.Name <> TT.Name Or ATM.Name Then,这在逻辑上看似正确,但是它什么也没做,没有任何变化。我尝试了and/or逻辑的一些变体,但似乎无法弄清楚。

我只是想排除wS ATMwS TT

1 个答案:

答案 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