我搜索谷歌无济于事。
我需要一个代码来选择多个工作表,并根据每个工作表单元格的内容移动到一本新书(1,8)。例如,单元格(1,8)中包含“fin Ops”的所有工作表都将移至book1,然后单元格(1,8)中包含“Re”的所有工作表将移至book2。
我尝试从下面的代码开始,但作为初学者有点困难:
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
If ws.Cells(1, 8).Value = "Fin Ops" Then
ActiveSheet.Select
End If
Next ws
非常感谢任何帮助!!
答案 0 :(得分:1)
你实际上是在正确的轨道上!您有正确的想法使用for-each循环来浏览所有工作表。
在此之前您要做的是创建一些Workbook对象,这些对象将是您希望将这些工作表移动到的工作簿。你可以这样做:
Dim oBookOne As Workbook
Set oBookOne = Application.Workbooks("<workbook name here>")
对所有需要的书籍重复这一点。在For-each循环中创建所有工作簿对象后,您可以执行以下操作:
For Each ws In ActiveWorkbook.Worksheets
If ws.Cells(1, 8).Value = "Fin Ops" Then
ws.Move After:= oBookOne.Sheets(oBookOne.Sheets.Count)
End If
Next ws
对于您需要过滤的每个条件重复此操作,它应该有效!
如果您需要进一步的帮助,Google就是您最好的朋友。 Here是关于工作簿对象如何工作的文档(heh),here是关于Move函数的文档。
答案 1 :(得分:0)
Sub SelectMove()
Dim ws As String
Dim arr() As String
Dim w As Worksheet
Dim c As Long
c = 0
For Each w In ActiveWorkbook.Worksheets
If w.Cells(1, 8) = "Fin Ops" Then
ws = ws & "," & w.Name
End If
Next
ws = Right(ws, Len(ws) - 1)
arr() = Split(ws, ",")
Sheets(arr).Move
End Sub