否则条件会阻止在VBA中执行条件

时间:2017-08-18 19:54:10

标签: excel vba excel-vba if-statement

我正在尝试在Excel VBA中运行以下代码,但 Else 条件错误地覆盖 If 条件。因此,所有每条j记录都被标识为不匹配。然而,当我删除 Else 条件时, If 条件正常运行并将j记录与相应的i记录匹配。

For j = 1 To 27
For i = 1 To 37
    If Dec1998(i) = DecGIS(j) And Stream1998(i) = StreamGIS(j) And Trib1998(i) = TribGIS(j) Then
        ID_GIS(j) = Rec1998(i)
    Else 
        ID_GIS(j) = "No match"
    End If
Next i
Next j

为简洁起见,我在问题中只包含了整个代码的子部分。为清楚起见,我附上了以下截图:

  1. j records (results with Else condition)
  2. i records
  3. 由于我缺乏声誉点,我无法上传任何图片;否则我会提供没有Else条件的 j记录以及整个VBA代码的屏幕截图。

    如何修改我的代码,以便 Else 条件仅在没有相应的i记录时将j记录标识为“不匹配”?

1 个答案:

答案 0 :(得分:4)

将其置于内循环之前,并在找到匹配后退出内循环。

这种方式"No Match"是默认值,如果找到匹配则会被覆盖。

For j = 1 To 27
    ID_GIS(j) = "No match"
    For i = 1 To 37
        If Dec1998(i) = DecGIS(j) And Stream1998(i) = StreamGIS(j) And Trib1998(i) = TribGIS(j) Then
            ID_GIS(j) = Rec1998(i)
            Exit For                           
        End If
    Next i
Next j