Excel 使用For循环和If/Then语句的VBA脚本
我还是VBA新手,目前正在编写代码,尝试检查列在每行中是否有特定的值。它需要使用for循环和if/then语句 我写了脚本,但当我执行它时,它什么也没做。有人能帮我检查一下我的代码写得是否正确吗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
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可能想要双条件如果为真,显示消息并退出,否则做一些事情等等。。