查看某个角色是否存在

时间:2016-03-04 10:25:24

标签: string vba excel-vba excel

我想遍历一定数量的单元格,看看它们是否包含字母表中的任何字符。我创建了字符串字母表,其中包括所有小写字母和大写字母。 单元格应该开始在其中包含信息的点位于第4行第1列。程序应该从之前声明为ClassList的工作表中搜索这些单元格。它只会搜索40个单元格。

For a = 4 to 44
    For b = 1 to Len(alphabet)
         If ClassList.ActiveSheet.Cells(a,2) = Mid(alphabet, b, 1) then
              NoStudents = NoStudents + 1
              Exit For
         End If
    Next b
Next a 

我知道ClassList.ActiveSheet.Cells(a,2)可以正常使用,因为它已在其他部分正常使用。问题是If语句由于某种原因永远不会是真的,即使我可以看到单元格中的第一个字符显然在字母表中!

2 个答案:

答案 0 :(得分:2)

您可以使用Like查找字母而无需循环字母:

For a = 4 To 44
    If ClassList.ActiveSheet.Cells(a, 2) Like "*[A-Za-z]*" Then
        NoStudents = NoStudents + 1
    End If
Next a

答案 1 :(得分:1)

使用InStr来测试字符是否在字符串中。 您可以使用语法

InStr( [start], string, substring, [compare] )

所以你的代码会变成

For a = 4 To 44
    For b = 1 To Len(alphabet)
         If InStr(1, ClassList.ActiveSheet.Cells(a, 2), Mid(alphabet, b, 1), vbTextCompare) > 0 Then
              NoStudents = NoStudents + 1
              Exit For
         End If
    Next b
Next a