VBA IF语句被跳过

时间:2018-12-04 18:58:25

标签: excel-vba if-statement

我一直在玩这个非常简单的代码,并且完全感到困惑。以下是我尝试解决问题的三种不同变体,但都没有奏效。

原始代码:

Sub GetResults()

Set Result = ActiveWorkbook.Worksheets("Results")
Set UTDT = ActiveWorkbook.Worksheets("UTDT")
Set RADAR = ActiveWorkbook.Worksheets("RADAR")

Dim y As Long
Dim i As Long
Dim x As Long

For x = 2 To RADAR.UsedRange.Rows.Count
For i = 2 To UTDT.UsedRange.Rows.Count
For y = 2 To Result.UsedRange.Rows.Count


If UTDT.Cells(i, 1) = RADAR.Cells(x, 1) And UTDT.Cells(i, 25) <> RADAR.Cells(x, 2) Then
Result.Cells(y, 1) = Trim(UTDT.Cells(i, 1))
Result.Cells(y, 2) = UTDT.Cells(i, 2)
Result.Cells(y, 3) = UTDT.Cells(i, 3)
Result.Cells(y, 4) = "Update"
End If

Next y
Next i
Next x

End Sub

然后我删除and部分,并添加了一个消息框来简化它:

Sub GetResults()

Set Result = ActiveWorkbook.Worksheets("Results")
Set UTDT = ActiveWorkbook.Worksheets("UTDT")
Set RADAR = ActiveWorkbook.Worksheets("RADAR")

Dim y As Long
Dim i As Long
Dim x As Long

For x = 2 To RADAR.UsedRange.Rows.Count
For i = 2 To UTDT.UsedRange.Rows.Count
For y = 2 To Result.UsedRange.Rows.Count


If UTDT.Cells(i, 1) = RADAR.Cells(x, 1) Then
MsgBox ("It WORKED!")
 End If

Next y
Next i
Next x

End Sub

仍然跳过IF语句。所以我决定将其更改为<>以防其被跳过,因为不可见的格式导致它为假..但仍然没有运气:

Sub GetResults()

Set Result = ActiveWorkbook.Worksheets("Results")
Set UTDT = ActiveWorkbook.Worksheets("UTDT")
Set RADAR = ActiveWorkbook.Worksheets("RADAR")

Dim y As Long
Dim i As Long
Dim x As Long

For x = 2 To RADAR.UsedRange.Rows.Count
For i = 2 To UTDT.UsedRange.Rows.Count
For y = 2 To Result.UsedRange.Rows.Count


If UTDT.Cells(i, 1) <> RADAR.Cells(x, 1) Then
MsgBox ("It WORKED!")
 End If

Next y
Next i
Next x

End Sub

0 个答案:

没有答案