生态木厂家
免费服务热线

Free service

hotline

010-00000000
生态木厂家
热门搜索:
行业资讯
当前位置:首页 > 行业资讯

巧用拼音首字母输入人名

发布时间:2021-01-20 12:33:51 阅读: 来源:生态木厂家

在极品列车时刻表中,查询车站名称,只输入站名的首字母即可。那么,能不能在Excel表格中只输入人员姓名的首字母,就迅速得到所需人名?

刘姐是单位的仓库保管,每天负责单位办公用品的出入库登记,以前都是用手工来记载的,总是不能及时地统计出库存记录和逐月消耗的情况。每天办公用品的出入库数据多而繁杂,如果用电脑登记,对她来说最麻烦的就要数录入申领人的姓名了,刘姐的拼音又不太好,于是向我求助有没有比较简便录入姓名的方法,我欣然接受了挑战。

一番研究后我发现使用姓名的首字母也能方便地输入人名,这需要借助VBA才能实现,当然只要将代码事先设置好了,用起来就会方便多了。其实也不复杂,一共有3个步骤,一起来看看吧。

创建员工姓名库

新建一张名为“姓名对照”的工作表(图1),输入单位所有员工的姓名以及这些姓名所对应的拼音首字母。

小提示:如果单位人数较多,也可利用VBA代码自动生成姓名所对应的拼音首字母,但不在本文讨论之列,读者朋友可参考网上的方法实现。

编写事件代码

接下来在“出库记录”工作表中编写调用的事件代码。方法是:激活“出库记录”工作表,按Alt+F11组合键打开VBE编辑器,在工作表的“Change”事件中编写下面的代码:

Private Sub Worksheet_Change(ByVal target As Range)

'判断当前是不是录入姓名所在列

If lumn = 5 Then

姓名输入 target

End If

End Sub

这段代码的作用是首先会判断当前活动单元格是不是在第五列(即输入姓名所在的列)。如果是则调用过程“姓名输入()”,该过程的代码如下:

'输入姓名的主体函数

Sub 姓名输入(aim As Range)

'清除单元格中的空格并将输入的字母转换为小写

On Error Resume Next

Dim short As String

short = Trim(LCase(lue))

'声明动态数组,调用Search过程在姓名对照表中查找信息

Dim result() As String

Search short, result

'如果查找到一个结果则直接写入单元格

If UBound(result) = 1 Then

lue = result(1)

'如果没有查找到则直接退出程序

ElseIf UBound(result) = 0 Then

Exit Sub

'如果查找到两个以上的结果则等待用户选择

Else

'循环等待用户输入,直至输入正确

Dim goOn As Boolean

Do

goOn = GetOne(result, aim)

Loop Until (goOn = True)

End If

End Sub

以上代码的含义是将用户输入在单元格中的拼音简写去除空格并且转换为它的小写形式,然后与“姓名对照”库进行比对,利用过程“Search()”找到匹配的拼音首字母简写后保存在数组“result()”中,如果查找到的拼音简称只有一个则返回其对应的中文名字,如果超过两个就显示输入框让用户选择输入(直到用户输入正确为止),如果没有查到则显示用户输入的拼音首字母简称。过程“Search()”的代码(图2)可到下面的地址下载。

录入姓名数据

最后我们就可以测试一下运行的情况了。在“出库记录”工作表第五列中录入姓名时只需输入员工姓名拼音的首字母(不区分大小写)就可以输入与之对应的姓名了。如果遇到拼音首字母相同的姓名,系统会自动弹出提示信息,由用户选择姓名前相应的序号进行输入(图3)。对于姓名库中没有的名字可以直接录入中文姓名或在姓名库中先添加再用拼音首字母录入。

梦幻江湖破解版

天书奇谈手游

战机风暴手游ios版