【问题标题】:loop gives me error. If i have error i wana go for next cell循环给了我错误。如果我有错误我想去下一个单元格
【发布时间】:2021-09-11 20:47:05
【问题描述】:

我有这个代码。我需要帮助。当在 pivot tabel3 vba 中找不到这个: Sheets("EXO").Range("N" & y).Value 我想去下一个单元格,直到 vba 找不到这个 Sheets("EXO").Range("N " & y).Value 然后 vba 应该复制和粘贴循环的一部分你能帮我吗?

Sub FILL_vALUES_EXO()
i = 1
y = 9
rng = Application.WorksheetFunction.CountA(Worksheets("EXO").Range("N9:N67"))


Do While i < rng
    
    
    Application.CutCopyMode = False
    
    Sheets("EXO").Range("N" & y).copy
    ActiveSheet.PivotTables("PivotTable3").PivotFields("RootCause").ClearAllFilters
   ActiveSheet.PivotTables("PivotTable3").PivotFields("RootCause").CurrentPage = _
       Sheets("EXO").Range("N" & y).Value
      

    
    Range("B6").Select
    Selection.End(xlDown).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.copy
    Range("O" & y).Select
    ActiveSheet.Paste

   Range("O4").Select
    Application.CutCopyMode = False
    Selection.copy
    Range("O" & y & ":R" & y).Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
y = y + 1
i = i + 1

结束子

【问题讨论】:

    标签: excel vba loops if-statement error-handling


    【解决方案1】:

    试试这个:

    Sub FILL_vALUES_EXO()
    Dim shtEXO As Worksheet
    Dim i As Integer, y As Integer, Rng As Integer
    
    i = 1
    y = 9
    Rng = WorksheetFunction.CountA(Worksheets("EXO").Range("N9:N67"))
    
    
    Do While i < Rng
        
        Application.CutCopyMode = False
        
        Set shtEXO = Worksheets("EXO")
        
        'removed this unnecessary copy operation
        'shtEXO.Range("N" & y).Copy
        
        With ActiveSheet.PivotTables("PivotTable3").PivotFields("RootCause")
            .ClearAllFilters
            .CurrentPage.Name = shtEXO.Range("N" & y).Value
        End With
        
        Range("B6").End(xlDown).Select
        Range(Selection, Selection.End(xlToRight)).Copy
        Range("O" & y).Paste
    
        Range("O4").Copy
        Range("O" & y & ":R" & y).PasteSpecial Paste:=xlPasteFormats, _ 
    Operation:=xlNone, _ 
    SkipBlanks:=False, _ 
    Transpose:=False
        
    Application.CutCopyMode = False
    
        y = y + 1
        i = i + 1
    Loop
    

    如果有什么让您感到困惑,您可以提出问题。

    编辑:

    根据 OP,他/她想添加错误处理

    ...
    On Error Goto JumpToNext 'if error is encountered, jump to whatever label you choose (JumpToNext)
    With ActiveSheet.PivotTables("PivotTable3").PivotFields("RootCause")
       .ClearAllFilters
       .CurrentPage.Name = shtEXO.Range("N" & y).Value
    End With
    ...
    'other codes
    ...
    JumpToNext:  'error handler will jump here if it encounters an error, skipping the codes in between
    Application.CutCopyMode = False
    
        y = y + 1
        i = i + 1
    Loop
    On Error GoTo 0 'disable error handler so that next procedures will execute normally
    

    【讨论】:

    • 同样的问题。 VBA 向我显示错误,他无法在过滤器 rootcause 中找到单元格 (N y) 值,如果 vba 无法在归档的 rootcause 中找到单元格值,我希望跳过复制和粘贴此循环的一部分,我希望 vba 检查此循环中的下一个单元格.
    • 我想用你知道如果错误或错误继续下一个但他们没有工作,所以你可能有另一个选择来解决这个问题吗?
    • 您看到了什么错误?你有你想要处理的错误和样本数据的截图吗?
    • vba 找不到此错误。CurrentPage.Name = shtEXO.Range("N" & y).Value,如果我收到此错误,我想跳过此错误。
    • 我仍然看到错误而不是执行下一步。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    相关资源
    最近更新 更多