我正在尝试将一些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
答案 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