Excel VBA - 检查列中的单元格不包含字符串8254并显示MsgBox

时间:2015-07-05 13:28:37

标签: excel-vba vba excel

我正在尝试将一些vba代码放在一起以检查从L2到最后一行数据的每个单元格中的内容(直到找到空白单元格)不包含字符串'8254'列中的数字代码L长度为27个字符,最后4个数字总是包含“8254”。因此,如果我可以在每个单元格中验证'8254',那么格式/代码是正确的(某些数字代码不正确,需要进行调查)。如果字符串'8254'不存在于一个或多个单元格中,则显示MsgBox警告,列中存在错误。

我一直在尝试使下面的代码工作,但我是vba的新手,需要一些帮助

有谁知道我该怎么做?

由于

Sub CheckCodes()

'Check column 'L' for Non Standard Number Codes
Dim code As Range

 For Each code In Range("L2", Range("L" & Rows.Count).End(xlUp))
    If VBA.Right$(VBA.Trim$(code), 4) <> "8254" Then
        MsgBox "Non Standard Number Codes Found!  " & vbNewLine & "Check Number Codes  ", , "ADVISORY!"
        Exit Sub
    End If
Next code
End Sub

2 个答案:

答案 0 :(得分:1)

我发现问题是代码检查了大量空白单元格到L1000行并导致问题。我修改如下,所以它只检查数据的底部,它工作正常。感谢您的帮助和评论。

Sub CheckCodes()

'Check column 'L' for Non Standard Number Codes
Dim code As Range

 For Each code In Range("L2", Range("L" & Rows.Count).End(xlUp))
    If VBA.Right$(VBA.Trim$(code), 4) <> "8254" Then
        MsgBox "Non Standard Number Codes Found!  " & vbNewLine & "Check Number Codes  ", , "ADVISORY!"
    Exit Sub
End If
Next code
End Sub

答案 1 :(得分:0)

使用<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output indent="yes"/> <xsl:key name="case-by-name" match="case" use="@name"/> <xsl:key name="test-by-case" match="test" use="parent::*/@name"/> <xsl:template match="/root"> <xsl:copy> <xsl:apply-templates select="*"/> </xsl:copy> </xsl:template> <xsl:template match="scenario"> <xsl:copy> <xsl:copy-of select="@*"/> <!-- process only first cases in groups --> <xsl:apply-templates select="case[generate-id() = generate-id(key('case-by-name', @name)[1])]"/> </xsl:copy> </xsl:template> <xsl:template match="case"> <xsl:copy> <xsl:copy-of select="@*"/> <!-- copy all tests for corresponding case name --> <xsl:copy-of select="key('test-by-case', @name)"/> </xsl:copy> </xsl:template> </xsl:stylesheet> 函数(假设检查right总是最后四位数):

8234