首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >运行时错误'-2147417848 (80010108)':方法‘插入’对象‘范围’失败

运行时错误'-2147417848 (80010108)':方法‘插入’对象‘范围’失败
EN

Stack Overflow用户
提问于 2021-02-01 11:50:03
回答 1查看 224关注 0票数 0

我正试图追踪我们的金融模式的变化。目的是找出谁回来解决问题。

我已经编写了执行代码,直到我从一个工作表切换到另一个特定工作表为止。

代码语言:javascript
运行
复制
Sub tracker()

    Dim Cell As Range
        
    For Each Cell In Sheets("Input check IC").Range("AI2:AI128")
        If Cell.Value <> 0 Then
            With Sheets("Copy IC")
                Sheets("Change tracker").Range("C10000").End(xlUp).Offset(1, 0).Resize(, 33).Value = .Range(.Cells(Cell.Row, "A"), .Cells(Cell.Row, "AG")).Value
            End With
        End If
    Next
            
    For Each Cell In Sheets("Input check IC").Range("AI2:AI128")
        If Cell.Value <> 0 Then
            With Sheets("Live IC")
                Sheets("Change tracker").Range("C10000").End(xlUp).Offset(1, 0).Resize(, 33).Value = .Range(.Cells(Cell.Row, "A"), .Cells(Cell.Row, "AG")).Value
            End With
        End If
    Next
                
    'Live IC
    Sheets("Live IC").Range("B2:AG128").Copy
    Sheets("Copy IC").Range("B2").PasteSpecial Paste:=xlPasteValues
                
    Application.CutCopyMode = False
    
End Sub

我有一个" RC“的重复代码,其中: IC =投资案例;RC=参考案例。RC是从跟踪器2在一个单独的模块调用。

当我访问工作簿中的任何工作表时,代码执行得非常完美,除了RC (来自IC)/ IC (来自RC)。当工作表被禁用时,我可能会添加调用代码。当我连续停用/激活IC/RC时,我觉得代码被卡在一个循环中。

它将一直运行到以下错误

运行时错误'-2147417848 (80010108)':方法‘插入’对象‘范围’失败‘

EN

回答 1

Stack Overflow用户

发布于 2021-02-01 12:52:36

复制范围

  • 假设所有工作表都在包含此代码的工作簿中。
  • 注意,数组将更有效地处理此问题。把它看作是范围的一课。
  • 没有测试。

“守则”

代码语言:javascript
运行
复制
Option Explicit

Sub tracker()
    
    Dim wb As Workbook: Set wb = ThisWorkbook
    
    Dim cws As Worksheet: Set cws = wb.Worksheets("Input check IC")
    Dim dst As Worksheet: Set dst = wb.Worksheets("Change tracker")
    Dim sws As Variant: ReDim sws(1 To 2)
    Set sws(1) = wb.Worksheets("Copy IC")
    Set sws(2) = wb.Worksheets("Live IC")
    
    Dim crg As Range: Set crg = cws.Range("AI2:AI128")
    Dim drg As Range
    Set drg = dst.Cells(dst.Rows.Count, "C").End(xlUp) _
        .Resize(, 33).Offset(1, 0)
    
    Dim srg As Range
    Dim n As Long
    Dim i As Long
    
    For n = 1 To 2
        Set srg = sws(n).Range("A2").Resize(crg.Rows.Count, 33)
        For i = 1 To crg.Cells.Count
            If crg.Cells(i).Value <> 0 Then
                drg.Value = srg.Rows(i).Value
                Set drg = drg.Offset(1)
            End If
        Next i
    Next n
                
    'Live IC
    sws(1).Range("B2:AG128").Value = sws(2).Range("B2:AG128").Value
    
End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65992224

复制
相关文章

相似问题

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