【问题标题】:How to fix a for loop that is skipping some values?如何修复跳过某些值的 for 循环?
【发布时间】:2019-05-27 16:45:13
【问题描述】:

我基本上在单元格 N3 中输入了一个日期和一个包含按日期排序的日期的列(第 I 列)。我正在尝试编写一个要求用户首先输入日期的代码。然后程序将在 I 列中查找该日期,并删除找到匹配项的行之后的所有行。

我的代码以某种方式工作,但这是我的问题。只有所需行下的部分行被删除,而不是全部。我在想这可能是for循环或计数器的问题? 如果你能帮忙,请告诉我:)

Sub DeleteAllRowsPaymentTooFar()

Worksheets("Master").Activate

Dim date_max As Date
date_max = InputBox("What is the maximum date to filter? ")



Range("N3").Value = date_max
Range("N3").NumberFormat = ("ddddd, mmmmmmmmm d, yyyy")


Dim i As Long
i = Range("A4").End(xlDown).Row
Dim result As Integer
Dim str1 As String, str2 As String
Dim counter As Long



str1 = Cells(3, 14).Text

counter = 4

Do While counter <= i

str2 = Cells(counter, 9).Text

result = StrComp(str1, str2, vbTextCompare)

  If result <> 0 Then
 MsgBox ("The date is not yet reached.")

  Else

        For K = counter To i
        Worksheets("Master").Rows(K).EntireRow.Delete
        Next


    End If

counter = counter + 1
Loop

End Sub

我希望删除找到匹配的行下的所有行。

【问题讨论】:

  • 你为什么不使用这样的东西来代替:Worksheets("Master").Range(counter, i).EntireRow.Delete 来代替任何需要 For 循环
  • 我认为你没有参考正确的表格。使用 a with Worksheets("Master") ,然后再试一次

标签: excel vba for-loop count counter


【解决方案1】:

这可能会对您有所帮助:

For i=LastPoint To FirstPoint Step-1

    Worksheets("Master").Rows(i).EntireRow.Delete

Next i

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多