写了一个有意义的VBA脚本,但仍然无法正常工作

时间:2017-10-11 07:36:26

标签: excel vba loops

嗨所以我正在尝试运行以下脚本,但它所做的只是放置" N / A"在一个列中,只是循环遍历下面的所有其他单元格而不做任何事情。

Sub NA()
    Range("E1").Select
    Do Until IsEmpty(ActiveCell)
        If Range("E1") = "password_update" Then If Range("G1") = Range("J1") Then Range("B1") = "N/A"
        ActiveCell.Offset(1, 0).Select
    Loop
End Sub

我要做的是检查单元格"E1"是否具有该值 " password_update"在其中,如果是,则还检查单元格"G1"和单元格"J1"是否具有匹配的内容,如果所有这些条件匹配,则键入" N / A"到单元格"B1"

我还希望让这个脚本循环遍历所有后续行(E1然后E2然后E3等等,你就明白了。现在我不是VBA专家,但是我写了这个剧本,无论我看多少次,对我来说逻辑上都有道理,但它仍然没有用。有任何想法吗?帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

试试这个。尽可能避免在代码中使用select语句。

Sub NA()
lastrow = Cells(Rows.Count, "E").End(xlUp).Row
For X = 1 To lastrow
    If Range("E" & X).Value = "password_update" And Range("G" & X) = Range("J" & X) Then Range("B" & X) = "N/A"
Next X
End Sub

答案 1 :(得分:0)

与上面的代码类似,但是如果你想更明确地了解正在发生的事情以及你正在使用的工作表(如果你在错误的工作表中运行,例如考虑在下面添加类似的东西)。这使用与您使用的相同的逻辑

Sub UpdateColBwithNA() 'Place in a standard module
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim LastRow As Long
    Dim currentRow As Long

    Set wb = ThisWorkbook
    Set ws = wb.Sheets("Sheet1") 'Change to name of sheet you are running code against

    With ws

        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
        .Range("E1").Activate

        For currentRow = 1 To LastRow
            If .Cells(currentRow, "E") = "password_update" And _
               (.Cells(currentRow, "G") = .Cells(currentRow, "J")) Then
                    .Cells(currentRow, "B") = "N/A"
            End If
        Next currentRow
        End With
End Sub

With语句表示您不必转到表格。