Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel-VBA:如何检查每个单元格的最后一个字符是否为>;(上级标志)_Excel_Vba - Fatal编程技术网

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

Excel-VBA:如何检查每个单元格的最后一个字符是否为>;(上级标志),excel,vba,Excel,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 您可以使用ri

如何在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

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

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

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

如果最后一个字符是

它将返回
TRUE
,您可以使用
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
尺寸C作为范围

对于工作表(“Sheet3”)”首先使用活动工作表。然后尝试在“C”列中查找最后一行。一旦找到它,就开始在从C1到C&lastRow的范围内循环。在这里,如果您在右侧找到符号“>”,则在即时窗口中打印“已找到”和行号。然后你退出潜艇

代码如下:

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

当我读到你的问题标题时,你说要检查C列中每个单元格中最右边的字符是否为“>”。对吧?

我不明白为什么一旦找到“>”单元格,就使用Exit,尽管它在错误的位置使用,因为它将在第一次循环后触发

如果你想达到你的问题标题所说的,试试这个

下面的代码将检查C列中的每个单元格,如果最后一个字符是“>”则返回“已找到!”,或者返回“未找到!”


你是说是否每个单元格都以“>”结尾?或者每个使用过的单元格都以“>”结尾?或者C列中使用的每个单元格都以“>”结尾?或者,在所有这些情况下,你是指任何一个手机,而不是每一个手机吗?谢谢你的回复。我的意思是C列中的“每个单元格”。我尝试了
如果C.值像“*>”则执行该操作,然后MsgBox“找到!!!在单元格”&C.地址结束,如果循环working@Alice你犯了什么错误?您是否在单元格中查找
作为
公式
?查看编辑过的代码,如果它现在可以工作的话。我正在宏(ALT+11)中编写代码,在那里,我用命令按钮创建了一个UserFrom。因此,我将您的代码粘贴到
Private Sub CommandButton1\u Click()
…中,得到运行时错误9:下标超出范围。很抱歉,我没有看到你的评论,我不得不用我的真实姓名更改“Sheet3”。它工作得很好。谢谢@爱丽丝在哪一行?您是否在工作表(“Sheet3”)
行中添加了带有工作表名称的“Sheet3”字样?您的代码无效。我将其粘贴到Private Sub CommandButton1_Click()中,但没有效果。将此代码放置在标准模块上,然后在CommandButton1_Click事件中,您只需要放置一行代码,如Call Check LastCharacterInstalling。请阅读我在答案中添加的描述以及代码,以了解此代码是如何工作的。此外,代码将在工作表的D列中返回find或Not Found。
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