【问题标题】:VBA run loop until number of instances is reachedVBA 运行循环,直到达到实例数
【发布时间】:2016-01-25 18:49:38
【问题描述】:

我需要运行一个宏来修复 Excel 工作表中的年份。 “Nov-Jan”左边的年份是 2010 年,但我添加 + 1 使其成为 2011 年。然后循环需要找到下一个“Nov_Jan”并执行相同的 2011 + 1 = 2012 年。停止循环我知道我需要计算“Nov-Jan”的实例数并运行它尽可能多的实例。所以只有 4 个“Nov-Jan”,循环只运行 4 次。下面的代码在同一个单元格中运行循环,并且不会继续寻找下一个“Nov-Jan”。我不知道为什么。我有一张图片显示我需要从“之前”->“之后”开始,但我的代码来自“之前”->“我拥有的”。

Dim iCount As Integer 
Dim i As Integer

i = 1

iCount = Application.WorksheetFunction.CountIf(Range("B:B"), "Nov - Jan")

Cells.Find(what:="Nov - Jan", after:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
    xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False _
    , SearchFormat:=False).Activate

Do Until i > iCount
    i = i + 1

    ActiveCell.Offset(0, -1).Select
    ActiveCell.Value = ActiveCell.Value + 1

    Cells.Find(what:="Nov - Jan", after:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
    xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False _
    , SearchFormat:=False).Activate
Loop

我需要从“之前” -> “之后”,但我的代码来自“之前” -> “我拥有的”

【问题讨论】:

    标签: vba excel loops count


    【解决方案1】:

    试试这个简单的代码:

    Sub loops()
    Dim c as range
    'Change the "Sheet2" reference to your sheet name.
    With Worksheets("Sheet2").Range("B:B")
        Set c = .Find("Nov - Jan", LookIn:=xlValues)
        If Not c Is Nothing Then
            firstAddress = c.Address
            Do
                c.Offset(, -1) = c.Offset(, -1) + 1
                Set c = .FindNext(c)
            Loop While Not c Is Nothing And c.Address <> firstAddress
        End If
    End With
    End Sub
    

    当使用 find 方法时,它有一个内置的 next 函数。它也可以分配给一个范围,然后可以对其进行操作以执行所需的操作。

    更多信息请参见HERE

    在您的代码中,您正在循环,但循环每次都会重置搜索,因此它每次只找到第一个。

    【讨论】:

    • ...希望我在写同样该死的东西之前看到这个!
    • @ScottCraner 你是救生员!非常感谢!
    • @code3dgyt3ch 请考虑标记为正确。这是只有你能做的事情。点击答案旁边的绿色复选标记。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 2015-10-07
    • 2016-06-18
    相关资源
    最近更新 更多