我在VBA中的while循环中有一个特定的行,它不会执行,但是每隔一行执行一次
预先感谢您阅读此问题。我是Excel VBA世界的新手。我在VBA中的while循环中有一个特定的行,它不会执行,但是每隔一行执行一次
我有我正在处理的电子表格。该电子表格有一些包含多列和多行的原始数据。我试图遍历整个工作表,并基于某些条件(如本周的日期或项目的值为打开),我试图将行的某些单元格复制到另一个选项卡(工作表)电子表格。
所以,现在,我的while循环工作正常,一些单元格值被复制到下一个选项卡,但只有一个单元格值不被复制。当我尝试调试它。我看到该行正在执行,但该值未被复制。我再次检查,看看我是否指的是正确的列,它是正确的。请参阅下面的代码。我有Sht1
和Sht2
作为在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的地方我想基于从跟踪表按钮单击单元格复制的布局。
@KacireeSoftware - 所以我测试如果当前日期在本周和O列儿童状况不等于封闭式完成再复制CAPA#,儿童任务编号,简短描述,到期日,工作流成员和实体添加到新工作表中。 你的假设是对的。我已经突出显示了无法使用的代码。 目前,电子表格如何设置,无论产品在哪里,没有儿童到期日期,并且有儿童任务的地方都没有到期日期。
@ YowE3K - 是列G只填充每个CAPA#的标题记录。
谢谢@KacireeSoftware和@ YowE3K的帮助。你的问题让我找到了问题。
代码的问题在于,它当前正在测试当前日期是否在本周,列O子状态不等于已关闭完成,然后复制CAPA#,子任务号,简短描述,截止日期,工作流成员和实体添加到新工作表。但是,电子表格中的产品/处理实体列在这些行中为空。所以即使它执行它,它也找不到任何东西在那里复制,并在那些行中复制空白。
谢谢你再次让我想到那个方向。你们真棒。
对我来说很好。我看到一些产品代码空白的单元格......你确定那些'Due'中有值吗? (我假设你高调与**无关) – KacireeSoftware
根据你的数据判断,看起来有可能G列在你有一个到期日落在当周的行上总是空白的。列G只填充在每个“CAPA#”的“标题”记录行上? – YowE3K