特定行号后无法切换行

时间:2019-09-28 14:43:26

标签: excel vba

我对编程很陌生,我有一项大学任务,需要计算一个人每周是否有超过40个小时的时间,如果是,则需要在该行中写H3:K3 (每个单元格= 1周) 但是我不知道在到达K3位置后如何更改行。 所以我只能检查5个人中的一个。 请有人帮我。 谢谢 Screenshot

VBA

Sub ssda()
    x=3
    i=2
    j=8
    Do
        x=x+1
        For i = 2 To 5
            if Cells(x, i) > 40 Then
              Cells(x, j) = "Ir parstrade"
              j = j + 1
        Else
            Cells(x, j) = "Nav parstrades"
            j = j + 1
        End If
    Next
    Loop Until x=x+1
End Sub

如果所有5个人工作超过40小时,我都需要答复。 如果大于40,则需要从单元格(B3:D3)中获取数字,然后在行(H3:K3)中输入“ Good”,否则为“ Bad”,还需要检查下一个人。

1 个答案:

答案 0 :(得分:0)

这未经测试,但我认为应该是正确的: 首先,您必须将每个人的j重置为8。
但是您也可以在一个单元格中使用.Offset(每个数字右边6个单元格),这对我来说似乎更容易。

Sub ssda()
    x=3
    ' i=2 not needed
    ' j=8 wrong here
    Do
        ' x=x+1 wrong here, if you want to start in row 3, not 4,
        ' in the first round. Put this at the end of the loop
        ' j = 8 would be ok here
        For i = 2 To 5
            if Cells(x, i) > 40 Then
                'Cells(x, j) = "Ir parstrade"
                ' alternative: just use offset
                Cells(x, i).Offset(0, 6) = "Ir parstrade"
            Else
                Cells(x, i).Offset(0, 6) = "Nav parstrades"
                'Cells(x, j) = "Nav parstrades"
            End If
            j = j + 1
        Next
        x = x + 1
    'Loop Until x=x+1 - this can never be true
    Loop Until Cells(x, 1) = ""
End Sub