如何将工作表移动到新的工作簿vba

时间:2014-09-30 18:40:53

标签: vba excel-vba excel

如何根据特定条件将工作表移动到新工作簿中?

如果工作表单元格H1(或单元格(1,8))包含" PI Fin Ops"我需要将工作表移动到新工作簿。

我的猜测如下,但它不起作用。非常感谢任何帮助!

Sub NewWb()

    For Each Worksheet In ThisWorkbook.Worksheets
        If Cells(1, 8).Value = "PI Fin Ops" Then
            Worksheet.Move After:=Workbooks.Add
        End If
    Next Worksheet

End Sub

2 个答案:

答案 0 :(得分:0)

试试这个:

Sub NewWb()

    Set wb1 = ThisWorkbook
    Set wb2 = Workbooks.Add

    For Each ws In wb1.Sheets
        If ws.Cells(1, 8).Value = "PI Fin Ops" Then
            ws.Move After:=wb2.Sheets(wb2.Sheets.Count)
        End If
    Next ws

End Sub

你的一些错误:

  1. 每次要移动工作表时,都在添加新工作簿
  2. 您没有将工作表移动到正确的位置(您必须在工作表之前或之后移动(不是工作簿))
  3. 在你的循环中,你总是指同一个工作表' (活动一个)
  4. 我认为使用"工作表"作为变量名称被禁止。

答案 1 :(得分:0)

此函数将遍历工作表并将它们添加到新工作簿,然后返回工作簿对象。

Function NewWb() As Workbook
Dim wb As Workbook
Dim ws As Worksheet
Set wb = Workbooks.Add
For Each ws In ThisWorkbook.Worksheets
    If ws.Cells(1, 8).Value = "PI Fin Ops" Then
        ws.Move After:=wb.Sheets(1)
    End If
Next ws

Set NewWb = wb
End Function