首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据单元格内容选择要移动的多个工作表?

如何根据单元格内容选择要移动的多个工作表?
EN

Stack Overflow用户
提问于 2014-09-30 03:04:43
回答 2查看 167关注 0票数 0

我已经在谷歌上搜索过了,但没有结果。

我需要一个代码,它将选择多个工作表,并移动到一个新书的基础上,每个工作表单元格(1,8)的内容。例如,将单元格(1,8)中包含"fin Ops“的所有工作表移动到book1,然后将单元格(1,8)中包含"Re”的所有工作表移动到book2。

我试着从下面的代码开始,但作为一个初学者有点困难:

代码语言:javascript
复制
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

非常感谢您的帮助!

EN

回答 2

Stack Overflow用户

发布于 2014-09-30 03:41:10

您实际上是在正确的轨道上!您的想法是正确的,使用for-each循环遍历所有工作表。

在此之前,您要做的是创建几个Workbook对象,这些对象将是您希望将这些工作表移动到的工作簿。您可以这样做:

代码语言:javascript
复制
Dim oBookOne As Workbook
Set oBookOne = Application.Workbooks("<workbook name here>")

对所有需要的书重复这一点。创建所有工作簿对象后,可以在For-each循环中执行以下操作:

代码语言:javascript
复制
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

对每个你需要过滤的条件重复这一步,它应该是有效的!

如果你需要进一步的帮助,谷歌是你最好的朋友。Here是关于工作簿对象如何工作的文档(heh),here是关于Move函数的文档。

票数 1
EN

Stack Overflow用户

发布于 2014-09-30 03:54:31

代码:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26107016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档