我在VBA中的while循环中有一个特定的行,它不会执行,但是每隔一行执行一次

问题描述:

预先感谢您阅读此问题。我是Excel VBA世界的新手。我在VBA中的while循环中有一个特定的行,它不会执行,但是每隔一行执行一次

我有我正在处理的电子表格。该电子表格有一些包含多列和多行的原始数据。我试图遍历整个工作表,并基于某些条件(如本周的日期或项目的值为打开),我试图将行的某些单元格复制到另一个选项卡(工作表)电子表格。

所以,现在,我的while循环工作正常,一些单元格值被复制到下一个选项卡,但只有一个单元格值不被复制。当我尝试调试它。我看到该行正在执行,但该值未被复制。我再次检查,看看我是否指的是正确的列,它是正确的。请参阅下面的代码。我有Sht1Sht2作为在Sub之外定义的公共常量,用于表格名称“Tracking Sheet”和“ItemsDueSheet”。

Public Const Sht1 = "Tracking Sheet" 
Public Const Sht2 = "ItemsDueSheet" 

Sub ItemsDueThisWeek() 

Dim rwCounter As Integer 
Dim rstart As Integer 
Dim rEnd As Integer 
Dim increment As Integer 
rstart = 3 
rEnd = 249 
rwCounter = 5 
increment = 1 
While (rstart <= rEnd) 
    'MsgBox (Format(Sheets(1).Cells(rStart, 16))) 
    If (Format(Sheets(Sht1).Cells(rstart, 16), "ww-yyyy") = Format(Date, "ww-yyyy") And Sheets(Sht1).Cells(rstart, 15) <> "Closed - Done") Then 
     Sheets(Sht2).Cells(rwCounter, 2) = increment 
     Sheets(Sht2).Cells(rwCounter, 4) = Sheets(Sht1).Cells(rstart, 1) 
     Sheets(Sht2).Cells(rwCounter, 5) = Sheets(Sht1).Cells(rstart, 2) 
     **Sheets(Sht2).Cells(rwCounter, 8) = Sheets(Sht1).Cells(rstart, 7)** 
     Sheets(Sht2).Cells(rwCounter, 3) = Sheets(Sht1).Cells(rstart, 13) 
     Sheets(Sht2).Cells(rwCounter, 6) = Sheets(Sht1).Cells(rstart, 16) 
     Sheets(Sht2).Cells(rwCounter, 7) = Sheets(Sht1).Cells(rstart, 12) 

     rwCounter = rwCounter + 1 
     increment = increment + 1 
     'MsgBox ("A") 

    Else 

     'Sheets(2).Cells(rwcounter, 5) = Sheets(1).Cells(rStart, 1) 
     'Sheets(2).Cells(rwcounter, 6) = Sheets(1).Cells(rStart, 2) 
    End If 

    rstart = rstart + 1 

Wend 

End Sub 

这里是ItemsdueSheet的地方我想基于从跟踪表按钮单击单元格复制的布局。

enter image description here enter image description here

+0

对我来说很好。我看到一些产品代码空白的单元格......你确定那些'Due'中有值吗? (我假设你高调与**无关) – KacireeSoftware

+0

根据你的数据判断,看起来有可能G列在你有一个到期日落在当周的行上总是空白的。列G只填充在每个“CAPA#”的“标题”记录行上? – YowE3K

@KacireeSoftware - 所以我测试如果当前日期在本周和O列儿童状况不等于封闭式完成再复制CAPA#,儿童任务编号,简短描述,到期日,工作流成员和实体添加到新工作表中。 你的假设是对的。我已经突出显示了无法使用的代码。 目前,电子表格如何设置,无论产品在哪里,没有儿童到期日期,并且有儿童任务的地方都没有到期日期。

@ YowE3K - 是列G只填充每个CAPA#的标题记录。

谢谢@KacireeSoftware和@ YowE3K的帮助。你的问题让我找到了问题。

代码的问题在于,它当前正在测试当前日期是否在本周,列O子状态不等于已关闭完成,然后复制CAPA#,子任务号,简短描述,截止日期,工作流成员和实体添加到新工作表。但是,电子表格中的产品/处理实体列在这些行中为空。所以即使它执行它,它也找不到任何东西在那里复制,并在那些行中复制空白。

谢谢你再次让我想到那个方向。你们真棒。