0

我正在尝试将特定工作表合并到工作簿中的一张工作表中。这里的挑战是阵列中的工作表可能并非一直可用。所以宏应该忽略那些并移动到下一张表来复制数据。我已经编写了代码,但是当工作表不存在时,宏会出现错误。

Sub test()
Dim MyArr, j As Long
Dim ws As Worksheet
Dim sary, i As Long

Worksheets.Add Before:=Worksheets("Equity")
ActiveSheet.Name = "Consolidated"
MyArr = Array("Sample Sheet_Equity", "Sample Sheet_Funds", "Sample Sheet_Warrants",    "Eq", "Fu", "Wa")

For j = 0 To UBound(MyArr)

Set ws = Worksheets(MyArr(j))

If Not ws Is Nothing Then

    ws.Select
    Rows("2:2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("Consolidated").Select
    Range("A2").End(xlDown).Offset(1, 0).Select

    ActiveSheet.Paste
End If
Next
End Sub
4

1 回答 1

3

你可以这样做:

For j = 0 To UBound(MyArr)
    On Error Resume Next
    Set ws = Worksheets(MyArr(j))
    If Err.Number = 0 Then
        On Error GoTo 0    
        If Not ws Is Nothing Then
            'Your copying code goes here
        End If
    Else
        Err.Clear
    End If
Next

更新:感谢 Doug Glancy 的评论,这里是更精简的版本

For j = 0 To UBound(MyArr)
    Set ws = Nothing

    On Error Resume Next
    Set ws = Worksheets(MyArr(j))
    On Error GoTo 0    

    If Not ws Is Nothing Then
        'Your copying code goes here
    End If
Next
于 2013-01-25T05:46:26.360 回答