Excel VBA代码在组中无法正常工作

时间:2018-10-18 09:25:43

标签: excel

我对VBA编码还是陌生的,就像大多数在这里提出类似问题的人一样。 :) 我编写了一个代码,该代码可以无任何错误地运行,但是由于某些原因,如果第二部分在一组中运行,则不会执行。出乎意料的是,如果我自己运行代码的第二部分,它将完成其工作。 有人可以给我一些指导来导致此问题的原因吗?

Sub Macro1()
 Endrow1 = Cells(Rows.Count, 1).End(xlUp).Row
Dim j As Integer
Dim k As Integer

For i = 3 To Endrow1
     With Sheets("Sheet1").Cells(i, 1)
        If Cells(i, 1).Value = "No" Then Cells(i, 1).Value = ""
        If Left(.Value, 3) = "Yes" Then
        Rows(i).Font.Bold = True
            a = Cells(i, 3).Value
            For j = 0 To 30
                Cells(j + i, 12).Value = a
            Next j

        End If
    End With
Next i

'------------------------------------------------------------------- Second Part:
For j = 3 To 300
     With Sheets("Sheet1").Cells(j, 7)
     If Cells(j, 7).Value >= a And Cells(j, 7) <= Cells(1, 11) Then

          If Cells(j, 12) = Cells(j, 12) Then
          On Error Resume Next
          For k = 0 To 30
            If Cells(j + k, 12) = Cells(j, 12) Then Cells(j + k, 12).Interior.Color = 255
            If Cells(j - k, 12) = Cells(j, 12) Then Cells(j - k, 12).Interior.Color = 255

          Next k
            End If
      End If
    End With
Next j

End Sub

1 个答案:

答案 0 :(得分:0)

  

调试此代码时,是否会超出“ If Cells(j,7).Value> = a And Cells(j,7)<= Cells(1,11)Then”这个条件?此外,隐藏“下一个错误时恢复”是什么?最后,我认为您的“使用”结构没有任何作用。

谢谢您的回答,马丁。该问题是由第二部分中的第一条if语句引起的。 这是正确的版本:

For j = 3 To 300
 With Sheets("Sheet1").Cells(j, 7)
 If Cells(j, 7).Value <= Cells(1, 11) Then

      If Cells(j, 12) = Cells(j, 12) Then
      On Error Resume Next
      For k = 0 To 30
        If Cells(j + k, 12) = Cells(j, 12) Then Cells(j + k, 12).Interior.Color = 255
        If Cells(j - k, 12) = Cells(j, 12) Then Cells(j - k, 12).Interior.Color = 255

      Next k
        End If
  End If
End With

下一个j

稍后我将摆脱with语句。 :)