首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果工作表上有数据,则尝试制作新的工作簿。

如果工作表上有数据,则尝试制作新的工作簿。
EN

Stack Overflow用户
提问于 2019-08-01 15:38:40
回答 1查看 35关注 0票数 0

如果工作表上有数据,则尝试制作新的工作簿。适用于一个工作表,但当它转到下一个工作表时,会得到“下标超出范围”的错误。

编辑3:

代码语言:javascript
复制
If WorksheetFunction.CountA(Workbooks("orders (3)").Worksheets("Sheet2").Range("A1:AY300")) = 0 And Workbooks("orders (3)").Worksheets("Sheet2").Shapes.Count = 0 Then
    Workbooks("orders (3)").Worksheets("Sheet2").Delete

    Else
    Dim sWorkbook As Workbook

    'Create New Workbook
    Set sWorkbook = Workbooks.Add

    'Save Above Created New Workbook
    sWorkbook.SaveAs Filename:="C:\CODE\11 Production.xlsx"
    End If


If WorksheetFunction.CountA(Workbooks("orders (3)").Worksheets("Sheet3").Range("A1:AY300")) = 0 And Workbooks("orders (3)").Worksheets("Sheet3").Shapes.Count = 0 Then
    Workbooks("orders (3)").Worksheets("Sheet3").Delete

    Else
    Dim sWorkbook1 As Workbook

    'Create New Workbook
    Set sWorkbook1 = Workbooks.Add

    'Save Above Created New Workbook
    sWorkbook1.SaveAs Filename:="C:\CODE\22 Production.xlsx"
    End If

If WorksheetFunction.CountA(Workbooks("orders (3)").Worksheets("Sheet4").Range("A1:AY300")) = 0 And Workbooks("orders (3)").Worksheets("Sheet4").Shapes.Count = 0 Then
    Workbooks("orders (3)").Worksheets("Sheet4").Delete

    Else
    Dim sWorkbook2 As Workbook

    'Create New Workbook
    Set sWorkbook2 = Workbooks.Add

    'Save Above Created New Workbook
    sWorkbook2.SaveAs Filename:="C:\CODE\33 Production.xlsx"
    End If

If WorksheetFunction.CountA(Workbooks("orders (3)").Worksheets("Sheet5").Range("A1:AY300")) = 0 And Workbooks("orders (3)").Worksheets("Sheet5").Shapes.Count = 0 Then
    Workbooks("orders (3)").Worksheets("Sheet5").Delete

    Else
    Dim sWorkbook3 As Workbook

    'Create New Workbook
    Set sWorkbook3 = Workbooks.Add

    'Save Above Created New Workbook
    sWorkbook3.SaveAs Filename:="C:\CODE\44 Production.xlsx"
    End If

If WorksheetFunction.CountA(Workbooks("orders (3)").Worksheets("Sheet6").Range("A1:AY300")) = 0 And Workbooks("orders (3)").Worksheets("Sheet6").Shapes.Count = 0 Then
    Workbooks("orders (3)").Worksheets("Sheet6").Delete

    Else
    Dim sWorkbook4 As Workbook

    'Create New Workbook
    Set sWorkbook4 = Workbooks.Add

    'Save Above Created New Workbook
    sWorkbook4.SaveAs Filename:="C:\CODE\55 Production.xlsx"
    End If
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-01 15:54:04

如果您不指定Workbook a Worksheet在其中,那么就会有一个隐式ActiveWorkbook。看起来活动工作簿是您刚才添加的工作簿,而不是原始工作簿。

尽管如此,这段代码可以简化为这样的代码:

代码语言:javascript
复制
Sub teststs()
    Dim ws as Worksheet
    For Each ws in ThisWorkbook.Worksheets
        If ws.Name <> "Sheet1" Then 'presumably you're skipping Sheet1, change as needed
             If WorksheetFunction.CountA(ws.Range("A1:AY300")) = 0 And ws.Shapes.Count = 0 Then
                  ws.Delete
             Else
                  Dim newWb as Workbook
                  Set newWb = Workbooks.Add

                  Dim i As Long
                  i = i + 11
                  newWb.SaveAs Filename:="C:\CODE\" & i & " Production.xlsx"              
             End If
        End If
    Next
End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57312566

复制
相关文章

相似问题

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