【问题标题】:Do while loop code wont play做while循环代码不会播放
【发布时间】:2015-07-07 19:34:29
【问题描述】:

然后我试图遍历数据列表并将包含“WIP”的行复制到第二个选项卡中。但是当我点击执行时,代码不会做任何事情。有人可以解释为什么吗?

谢谢。

Sub Update_LvL1_WIP()

Dim BrowFi As Integer

Dim BrowWIP1 As Integer

Dim dblSKU As Double
Dim strDescription As String
Dim strType As String


BrowFi = (ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row) + 1

Do While BrowFi > 4

    If Range("G" & BrowFi).Value = "WIP" Then

       strType = Range("G" & BrowFi).Value
       strDescription = Range("F" & BrowFi).Value
       dblSKU = Range("E" & BrowFi).Value

       Worksheets("WIP 1").Activate

           BrowWIP1 = (ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row) +1

                Range("A" & BrowWIP1).Value = dblSKU
                Range("B" & BrowWIP1).Value = strDescription
                Range("B" & BrowWIP1).Value = strType

    Else

        BrowFi = BrowiF - 1

    End If

Loop

End Sub

【问题讨论】:

  • 使用调试器单步调试时会看到什么(同时在本地窗口中查看各种变量的内容)?

标签: vba loops do-while


【解决方案1】:

您的递减变量中有错字

BrowFi = BrowiF - 1

应该是

BrowFi = BrowFi - 1

由于未定义 BrowiF,它被视为 0,因此您在第一次运行循环时将 BrowFi 设置为 -1

可能值得使用Option Explicit 来帮助捕获这些错误。

【讨论】:

  • 很好,值得点赞。也许您可以编辑您的答案,包括提及 Option Explicit 的重要性。
  • 感谢您的帮助,但代码仍然无法运行并且没有给我任何错误消息。可能是与我的代码无关的东西吗?
  • 你必须调试你的代码。注意价值观。我认为问题与excel数据有关。在这一行之后查看 BrowFi 的值-BrowFi = (ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row) + 1
  • 首先,将“Option Explicit”添加到模块顶部,然后编译。这是您需要做的第一步。其次,如果你能够编译,那么你就可以调试了。在执行代码的第一行(在 Dim 语句之后)放置一个断点,然后逐行检查代码,检查值是否符合预期。
  • 错误就行了:"If Range("G" & BrowF).Value = Range("G3").Value Then.." as the value in Range("G" & BrowF) 是一个返回 NA 或值的 vlookup。有没有办法让它工作?还是我需要制作这些值的硬拷贝
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-08
  • 2011-12-26
  • 2016-06-08
  • 1970-01-01
  • 2013-04-07
  • 1970-01-01
相关资源
最近更新 更多