Excel 使用For循环和If/Then语句的VBA脚本

Excel 使用For循环和If/Then语句的VBA脚本,excel,vba,if-statement,Excel,Vba,If Statement,我还是VBA新手,目前正在编写代码,尝试检查列在每行中是否有特定的值。它需要使用for循环和if/then语句 我写了脚本,但当我执行它时,它什么也没做。有人能帮我检查一下我的代码写得是否正确吗 Sub TestCheck() Dim Rng As Range Dim xlsheet As Object Dim c As Range Dim LastRow As Long 'Checks each cell value in column A for

我还是VBA新手,目前正在编写代码,尝试检查列在每行中是否有特定的值。它需要使用for循环和if/then语句

我写了脚本,但当我执行它时,它什么也没做。有人能帮我检查一下我的代码写得是否正确吗

Sub TestCheck()

    Dim Rng As Range
    Dim xlsheet As Object
    Dim c As Range
    Dim LastRow As Long

    'Checks each cell value in column A for string - "Iris Concept of Operations"'
    n = 0

    Set xlsheet = ActiveSheet
    With xlsheet
    LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

    If .Cells(.Rows.Count, "A").End(xlUp).Row = 0 Then
        MsgBox "The spreadsheet doesn't work"
        GoTo ExitHere

        Set Rng = .Range(LastRow).Offset(n, 0)

        For Each c In Rng
            n = n + 1

            If InStr(c.Value, "Iris Concept of Operations") > 0 Then
                With xlsheet
                    .Range("A1").Offset(n, 8) = c.ClearContents
                End With
            Else
                With xlsheet
                    .Range("A1").Offset(n, 2) = c.ClearContents
                End With
            End If
        Next c

    End If

    ExitHere:
        Set xlsheet = Nothing
        Set Rng = Nothing
    End With

End Sub

如果
位于错误位置,则
结束。正确缩进代码将显示这一点。现在,您的循环都在
If…End If
中,在点击循环之前退出

If .Cells(.Rows.Count, "A").End(xlUp).Row = 0 Then
    MsgBox "The spreadsheet doesn't work"
    GoTo ExitHere
End If  ' Move the End If here.
此外,没有第0行。你的情况永远不会是真的

.Cells(.Rows.Count, "A").End(xlUp).Row = 0
此外,这也是有问题的:

Set Rng = .Range(LastRow).Offset(n, 0)
.Range("A1").Offset(n, 8) = c.ClearContents
LastRow
不是有效的
范围
引用。另外,如果从一个单元格中偏移,结果仍然是一个单元格,因此不会在多个单元格中循环

这也是一个问题:

Set Rng = .Range(LastRow).Offset(n, 0)
.Range("A1").Offset(n, 8) = c.ClearContents
ClearContents
不返回任何内容,并且不应与
=
对齐


简言之,我建议您将其分解为更小的部分,您可以自己开始工作。

如果
位于错误位置,则
结束。正确缩进代码将显示这一点。现在,您的循环都在
If…End If
中,在点击循环之前退出

If .Cells(.Rows.Count, "A").End(xlUp).Row = 0 Then
    MsgBox "The spreadsheet doesn't work"
    GoTo ExitHere
End If  ' Move the End If here.
此外,没有第0行。你的情况永远不会是真的

.Cells(.Rows.Count, "A").End(xlUp).Row = 0
此外,这也是有问题的:

Set Rng = .Range(LastRow).Offset(n, 0)
.Range("A1").Offset(n, 8) = c.ClearContents
LastRow
不是有效的
范围
引用。另外,如果从一个单元格中偏移,结果仍然是一个单元格,因此不会在多个单元格中循环

这也是一个问题:

Set Rng = .Range(LastRow).Offset(n, 0)
.Range("A1").Offset(n, 8) = c.ClearContents
ClearContents
不返回任何内容,并且不应与
=
对齐


简言之,我建议你把它分解成更小的部分,你可以自己开始工作。

我想你错过了其他部分,试着在这一行之后写其他部分转到ExitHere@Bilal只有当您要执行“else”命令时,才需要“else”。如果你只需要做一件事,你可以只做一个“如果”而不做“其他”。@TylerH是的,我知道,但看到OP的代码,我想OP可能想要双条件如果为真,显示消息并退出,否则做一些事情等。我想你错过了其他,试着在这一行后写其他。转到ExitHere@Bilal“其他人”仅当要执行“else”命令时才需要。如果你只需要做一件事,你可以只做一个“如果”而不做“其他”。@TylerH是的,我知道,但是看到OP的代码,我想OP可能想要双条件如果为真,显示消息并退出,否则做一些事情等等。。