IF语句的第一部分被忽略了

时间:2015-10-18 15:30:24

标签: excel excel-vba loops if-statement vba

我在VBA中有以下IF语句,但是"删除"声明的一部分,或ElseIf之前的位,完全被忽略:

    For i = 3 To (customerNum + 3)
    If Sheets("Reports").Range("L" & i).Value = "A" Then
        Sheets("Reports").Range("G" & i & ":M" & i).Select
        Selection.Delete Shift:=xlUp
    ElseIf Sheets("Reports").Range("L" & i).Value <> "A" Then
        Sheets("Reports").Range("J" & i).Value = form1_1 & i & form1_2
        Sheets("Reports").Range("J" & i).NumberFormat = "d-mmm-yy"
        Sheets("Reports").Range("M" & i).Value = form2_1 & i & form2_2 & i
        Sheets("Reports").Range("M" & i).NumberFormat = "_-[$£-809]* #,##0.00_-;-[$£-809]* #,##0.00_-;_-[$£-809]* ""-""??_-;_-@_-"
    End If
Next i

其余的顺利进行。没有崩溃或错误。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

也许你需要从底部开始然后再上去。

Sub Button1_Click()
    Dim sh As Worksheet
    Dim Rws As Long, rng As Range, nwrw As Long

    Set sh = Sheets("Reports")

    With sh

        Rws = .Cells(.Rows.Count, "L").End(xlUp).Row

        For i = Rws To 3 Step -1

            If .Cells(i, "L") = "A" Then .Range(.Cells(i, "G"), .Cells(i, "M")).Delete Shift:=xlUp

            If .Cells(i, "L") <> "A" Then

                .Cells(i, "J") = "something" & i & "something else"
                .Cells(i, "M") = "something" & i & "something else"

            End If

        Next i

    End With

End Sub

答案 1 :(得分:1)

这不是(!)应该是一个额外的答案。然而,我想补充这个“答案”,因为(偶尔)我在一张Excel表格中遇到了各种不同的“A”或“C”(等)的问题。在大公司工作时,我让同事一次处理多个不同的字符集(他们的原生字符集和英文字符集)。请注意,西里尔语“A”looks喜欢拉丁语“A”。然而,即使Option Compare Text,两者也不同。以下代码将显示字符的unicode,并且可能是检查特定单元格中是否输入“A”的更好方法:

Public Sub CheckUnicode()
Dim lngRowNumber As Long

Debug.Print AscW("A")
With Sheets("Reports")
    For lngRowNumber = 1 To 100000
        If Trim(.Range("L" & lngRowNumber).Value2) = vbNullString Then Exit For
        Debug.Print AscW(Left(.Range("L" & lngRowNumber).Value2, 1))
    Next lngRowNumber
    ' The following will append a cyrillic a to the bottom of the sheet in Column "A"
    .Range("A" & lngRowNumber + 1).Value2 = ChrW(1072)
End With

End Sub

我只是为可能遇到类似问题的其他人添加此“解决方案”。如前所述,有几个字符看起来相似但不是。另请注意,这只是西里尔字母。可能还有其他字符集似乎相似。