Excel - VBA:如何检查每个单元格的最后一个字符是否为> (高级标志)

时间:2017-04-18 10:07:01

标签: excel excel-vba vba

如何在VBA-Excel中检查工作表中每个单元格的最后一个字符是否为>(高级符号)。

以下是我到目前为止所做的事情。

Dim c As Range

For Each c In Range("C1", Range(">" & Rows.Count).End(xlUp))
    If Not IsNumeric(Mid(c, 3, 1)) Then
        MsgBox ("Found !!!")
    End If
    Exit For
Next c

4 个答案:

答案 0 :(得分:0)

您可以使用right函数获取最后一个字符,并检查它是否等于chr(62) <{1}} >

您可以通过以下方式修改代码:

Right(ActiveCell.Value, 1) = Chr(62)

如果最后一个字符为TRUE

,它将返回>

答案 1 :(得分:0)

您可以将Like运算符与通配符*一起用作前缀。

For循环中,要检查单元格最后是否有>,请使用:

Dim C As Range

With Worksheets("Sheet3") ' <-- modify "Sheet3" to your sheet's name
    ' loop through column C, from C1 until last cell with data in Column C (including blank cells in the middle)
    For Each C In Range("C1:C" & .Cells(.Rows.Count, "C").End(xlUp).Row)
        If C.Value Like "*>" Then '<-- if the end of the cell is ">"
            MsgBox "Found !!! at Cell " & C.Address
        End If
    Next C
End With

答案 2 :(得分:0)

首先使用活动工作表。然后,您尝试在“C”列中找到最后一行。一旦找到它,就开始在从C1到C&amp; lastRow的范围内循环。在那里,如果你发现标志“&gt;”在右侧,您可以在即时窗口中打印“找到”和行号。然后退出子。

以下是代码:

Public Sub TestMe()

    Dim c           As Range
    Dim lastRow     As Long

    With ActiveSheet
        lastRow = .Cells(.Rows.Count, "C").End(xlUp).Row

        For Each c In .Range(.Cells(1, 3), .Cells(lastRow, 3))
            If Right(c, 1) = ">" Then
                Debug.Print "FOUND"
                Debug.Print c.Row
            Exit For
            End If


        Next c

    End With

End Sub

答案 3 :(得分:0)

当我阅读你的问题标题时,你说你要检查C列中每个单元格中最右边的字符是否是&#34;&gt;&#34;。正确?

我不明白为什么你使用退出一次&#34;&gt;&#34;找到任何单元格,虽然它在错误的地方使用,因为它将在第一次循环后被触发。

如果你想实现你的问题标题所说的话,试试这个......

以下代码将检查C列中的每个单元格并返回&#34; Found!&#34;如果最后一个字符是&#34;&gt;&#34;或将返回&#34; Not Found!&#34;。

Sub CheckTheLastCharacterInString()
    Dim lr As Long
    lr = Cells(Rows.Count, "C").End(xlUp).Row
    Range("D1:D" & lr).Value = Evaluate("IF(RIGHT(C1:C" & lr & ",1)="">"",""Found!"",""Not Found!"")")
End Sub