Vba 代码中断错误

Vba 代码中断错误,vba,if-statement,while-loop,interruption,Vba,If Statement,While Loop,Interruption,因此,我下面的代码试图在H列中找到WIP。如果我们找到WIP:复制3个单元格,并在下一列中的同一行或下一个可用行中制作10个副本 出于某种原因,代码仅针对第一个“WIP”值成功运行循环,然后给出代码中断错误。有人知道为什么会这样吗 谢谢你,Ori Sub Step1_update() Dim dblSKU As Double Dim strDesc As String Dim strType As String Dim BrowFin As Integer Dim Browfin1 As In

因此,我下面的代码试图在H列中找到WIP。如果我们找到WIP:复制3个单元格,并在下一列中的同一行或下一个可用行中制作10个副本

出于某种原因,代码仅针对第一个“WIP”值成功运行循环,然后给出代码中断错误。有人知道为什么会这样吗

谢谢你,Ori

Sub Step1_update()

Dim dblSKU As Double
Dim strDesc As String
Dim strType As String
Dim BrowFin As Integer
Dim Browfin1 As Integer
Dim Counter As Integer
Dim Trowfin As Integer

Counter = 0

Worksheets("Final").Activate

Trowfin = 5
BrowFin = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row

'loop 1
Do While Trowfin < BrowFin

    'If 1 (set the 3 values)
    If Range("H" & Trowfin).Value = Range("H3").Value Then

         dblSKU = Range("F" & Trowfin).Value
         strDesc = Range("G" & Trowfin).Value
         strType = Range("H" & Trowfin).Value

         'Find the last used row in Col J
         Browfin1 = (ActiveSheet.Range("J" & Rows.Count).End(xlUp).Row)

         Counter = 0
         'paste values 15 times
         Do While Counter < 15

            'If 2
            If Browfin1 > (Trowfin + Counter) Then

                   Range("J" & Browfin1).Value = dblSKU
                   Range("K" & Browfin1).Value = strDesc
                   Range("L" & Browfin1).Value = strType


            ElseIf Browfin1 < (Trowfin + Counter) Then

                   Range("J" & (Trowfin + Counter)).Value = dblSKU
                   Range("K" & (Trowfin + Counter)).Value = strDesc
                   Range("L" & (Trowfin + Counter)).Value = strType

            Else

                   Range("J" & (Trowfin + Counter)).Value = dblSKU
                   Range("K" & (Trowfin + Counter)).Value = strDesc
                   Range("L" & (Trowfin + Counter)).Value = strType

            End If

        'Loop to paste the WIP 15 times
        Loop

             Trowfin = Trowfin + 1
             Counter = 0

    'If cell (H...) is not a WIP
    Else

        Trowfin = Trowfin + 1

    'If 1
    End If



'loop 1
Loop

End Sub
子步骤1\u更新()
双精度dblSKU
作为字符串的Dim strDesc
作为字符串的Dim strType
Dim BrowFin作为整数
Dim Browfin1为整数
作为整数的Dim计数器
Dim Trowfin作为整数
计数器=0
工作表(“最终版”)。激活
特罗芬=5
BrowFin=ActiveSheet.Range(“A”&Rows.Count).End(xlUp).Row
'循环1
当特罗芬(特罗芬+计数器),则
范围(“J”和Browfin1)。值=dblSKU
范围(“K”和Browfin1)。值=strDesc
范围(“L”和Browfin1)。值=strType
ElseIf Browfin1<(特罗芬+计数器)然后
范围(“J”和(特罗芬+计数器))。值=dblSKU
范围(“K”和(特罗芬+计数器))。值=标准偏差
范围(“L”和(Trowfin+计数器))。值=标准类型
其他的
范围(“J”和(特罗芬+计数器))。值=dblSKU
范围(“K”和(特罗芬+计数器))。值=标准偏差
范围(“L”和(Trowfin+计数器))。值=标准类型
如果结束
'循环以粘贴WIP 15次
环
特罗芬=特罗芬+1
计数器=0
'如果单元(H…)不是在制品
其他的
特罗芬=特罗芬+1
“如果1
如果结束
'循环1
环
端接头

您以前的代码如下所示:

  Else
    Range("J" & (Trowfin + Counter)).Value = dblSKU
    Range("K" & (Trowfin + Counter)).Value = strDesc
    Range("L" & (Trowfin + Counter)).Value = strType

    Counter = Counter + 1
  'If 2
  End If
Loop
您应该这样做:

  Else
    Range("J" & (Trowfin + Counter)).Value = dblSKU
    Range("K" & (Trowfin + Counter)).Value = strDesc
    Range("L" & (Trowfin + Counter)).Value = strType

  'If 2
  End If
  Counter = Counter + 1
Loop
当前代码在
Else
中具有增量,这意味着在循环执行时它有可能不会被命中。如果发生这种情况,您的循环将无限期地继续,导致Excel崩溃或代码中断


如果要基于计数器循环,需要确保计数器在非无限长的时间内达到退出条件。

是否希望
计数器每次递增?是否应该在
Else
右侧的
循环
之外?我希望计数器增加15倍,以便在我搜索的值旁边粘贴15倍的值。虽然我需要trowfin在循环完成后返回其原始值。这样我就可以继续搜索列表了。我已经更新了我的工作,告诉我你的想法。在我看来,你好像在乞求一个无限循环,将
计数器
放入一个条件中。这可能就是代码中断的原因,除非您使用
BREAK
键手动中断代码。如何中断?我重置计数器,这样每次我在列表中找到我的关键字时,我都会复制它15次。或者我看到的是错误的?您的编辑删除了增量,但我会执行
范围(“L”&(Trowfin+Counter))。Value=strType:End If:Counter=Counter+1:Loop
。在该代码中,
表示一个新行,尽管从技术上讲它将使用冒号进行复制和粘贴。您需要在条件之外增加,否则,如果未命中该代码分支,计数器将永远不会更新。