Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops Excel VBA-Do While Loop-移动到下一行_Loops_Do While - Fatal编程技术网

Loops Excel VBA-Do While Loop-移动到下一行

Loops Excel VBA-Do While Loop-移动到下一行,loops,do-while,Loops,Do While,我正在尝试根据不同的单元格值向报表输出添加注释 我选择了Do While…循环,因为一旦列B中的Unq标识符不再出现在连续的行中,而不是在整个工作表中继续,条件就需要停止。Unq标识符可以在1-50行中找到。测试Col K值,如果发现Col N值,则将其与原始单元格(LastCell)进行比较。 这似乎是可行的,但是,我无法使循环移动到下一行。 我使用的是rng=rng+1,但它没有向下移动一行,而是将1添加到Unq标识符中,即:123变为124 我该如何下排?或者,有没有更好的方法来解决这个问

我正在尝试根据不同的单元格值向报表输出添加注释

我选择了Do While…循环,因为一旦列B中的Unq标识符不再出现在连续的行中,而不是在整个工作表中继续,条件就需要停止。Unq标识符可以在1-50行中找到。测试Col K值,如果发现Col N值,则将其与原始单元格(LastCell)进行比较。 这似乎是可行的,但是,我无法使循环移动到下一行。 我使用的是rng=rng+1,但它没有向下移动一行,而是将1添加到Unq标识符中,即:123变为124

我该如何下排?或者,有没有更好的方法来解决这个问题

仅供参考,我正在修改其他人的代码,而不是从头开始

Sub play()
 
Dim Unq As Long
Dim Cell As Range
Dim LastCell As Range
Dim rng As Range
 
For Each Cell In Range("U2:U" & ActiveSheet.UsedRange.Rows.Count)
        If Int(Range("B" & Cell.Row).Value) <> Unq And Len(Range("A" & Cell.Row).Value) > 0 Then
            Unq = Int(Range("B" & Cell.Row).Value)
            Cell.Value = Cell.Offset(0, -6).Value - Cell.Offset(0, -5).Value
        If Cell.Offset(0, -15) = "REG" Then
            GoTo Skip1
       
Skip1:
  
    'Bonus identified - No requirement to investigate
        If Cell.Offset(0, -2).Value <> 0 Or Cell.Offset(0, -1).Value <> 0 Then
       
        Set LastCell = Cell
        Set rng = Cell.Offset(0, -19)
                        
        Do While rng.Value = Unq
           
            If rng.Offset(0, 9).Value = "BONUS" And rng.Offset(0, 12).Value = LastCell.Value Then
            LastCell.Activate
            Cell.Offset(0, 1).Value = "Bonus Paid"
            ElseIf rng.Offset(0, 9).Value = "BONUS" And rng.Offset(0, 12).Value <> LastCell.Value Then
            LastCell.Activate
            Cell.Offset(0, 1).Value = "Retention Bonus Paid"
            Cell.Offset(0, 2).Value = "Variation managed by macro"
            Cell.Offset(0, 3).Value = "Variation managed by macro"
            Cell.Offset(0, 4).Value = Date
            Cell.Offset(0, 5).Value = "Yes"
        Else:
         rng = rng + 1
        
       
    End If
                  
    Loop
 
子播放()
如长
暗淡单元格作为范围
将最后一个单元格设置为范围
变暗rng As范围
对于范围内的每个单元格(“U2:U”&ActiveSheet.UsedRange.Rows.Count)
如果Int(Range(“B”)和Cell.Row.Value)Unq和Len(Range(“A”)和Cell.Row.Value)大于0,则
Unq=Int(范围(“B”和Cell.Row).Value)
Cell.Value=Cell.Offset(0,-6).Value-Cell.Offset(0,-5).Value
如果单元格偏移量(0,-15)=“REG”,则
跳台滑雪1
技巧1:
“已确定奖金-无需调查
如果单元格偏移量(0,-2).Value为0或单元格偏移量(0,-1).Value为0,则
设置LastCell=单元格
设置rng=单元偏移量(0,-19)
当rng.Value=Unq时执行
如果rng.Offset(0,9).Value=“BONUS”和rng.Offset(0,12).Value=LastCell.Value,则
最后一个细胞,激活
单元格偏移量(0,1).Value=“已支付奖金”
ElseIf rng.Offset(0,9).Value=“BONUS”和rng.Offset(0,12).值LastCell.Value然后
最后一个细胞,激活
单元格偏移量(0,1).Value=“支付的保留奖金”
Cell.Offset(0,2).Value=“宏管理的变化”
Cell.Offset(0,3).Value=“宏管理的变化”
单元格偏移量(0,4)。值=日期
单元格偏移量(0,5).Value=“是”
其他:
rng=rng+1
如果结束
环

昨天显然不是我最开心的日子

将代码修改为
Do,直到rng.value Unq或Cell.Offset(0,1“

改变

Else:
rng = rng + 1

工作是一种享受

Else:
Set rng = rng.offset(1, 0)