如何使用VBA代码实现Excel之查找所有工作表中的学生姓名?
先看下图吧!

假如,您的工作薄中有几十个班级,每个班级A列,保存的是学生的班级,而B列,保存的是学生的姓名。那么,我们如何使用VBA,一次性迅速查找所有工作表中的学生姓名呢?
本例子,分为两种情况,即按全名来查找和按单字来查找。因此,在最后一张工作表中,我们使用两个按钮控件,分别实现此二功能。

点击“查找学生姓名”,弹出对话框,可输入要查找的学生的全名,从而实现查找;点击“单字查找姓名”,可输入学生姓名中的任何一个中文,然后自动查找所有工作表中包含该单字的学生。
无论使用哪种方法查找,都会弹出如下图的输入框!

如上图,是按单字查找的输入框(按全名查找的对话框与此类似,不再阐述)。

如果找到,那么,就会弹出如上图的提示对话框,分别标出属于哪个班级,姓名是什么。
好了,功能介绍为了,下面我们就看看这两种功能的代码吧。
①全名查找的功能代码
MyName = Trim(InputBox("输入学生姓名", "请输入姓名", "请在此输入学生姓名"))
For i = 1 To Worksheets.Count - 1
For j = 4 To Worksheets(i).UsedRange.Rows.Count
If (MyName = Trim(Worksheets(i).Cells(j, 3).Value)) Then
MsgBox "班级是:" & Worksheets(i).Cells(j, 2).Value & "姓名是" & Worksheets(i).Cells(j, 3).Value
End If
Next j
Next i
②按单字查找的功能代码
YouName = Trim(InputBox("输入学生姓名中的单字", "请输入姓名中的单字", "请在此输入学生姓名单字"))
Dim MyName As String
For i = 1 To Worksheets.Count - 1
For j = 4 To Worksheets(i).UsedRange.Rows.Count
MyName = Trim(Worksheets(i).Cells(j, 3).Value)
For k = 1 To (Len(MyName))
If (YouName = Mid(MyName, k, 1)) Then
MsgBox "班级是:" & Worksheets(i).Cells(j, 2).Value & "姓名是" & Worksheets(i).Cells(j, 3).Value
End If
Next k
Next j
Next i
③部分代码解释
For i = 1 To Worksheets.Count - 1,要查找的学生姓名,从第一个工作表开始查找,找到倒数第二个工作表。因为最后一个工作表,是放按钮控件的,没有班级信息。
For j = 4 To Worksheets(i).UsedRange.Rows.Count,查找每个班级的学生姓名的时候,从第4行开始查找,因为从第四行起,才有学生姓名。前三行都是保存其它信息的。
YouName = Trim(InputBox……,这是一个弹出输入框的代码,以方便我们输入要查找的姓名。
好了,就介绍到这里吧,有什么不明白的,就问问本站站长。