我想遍历一定数量的单元格,看看它们是否包含字母表中的任何字符。我创建了字符串字母表,其中包括所有小写字母和大写字母。 单元格应该开始在其中包含信息的点位于第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语句由于某种原因永远不会是真的,即使我可以看到单元格中的第一个字符显然在字母表中!
答案 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