当前位置 博文首页 > shdzhjx的博客:Excel神奇的输入自动替换,原来就是这么简单!
昨天经过大神的办公桌时,无意中看见大神在Excel单元格中输入供应商代码,一按回车,单元格内容马上变成了供应商的公司名称。我震惊了,感觉好神奇啊。我说为什么大神每次填单子都是又快又准确呢?原来他不需要用键盘输入长长的供应商公司的名字,而只是输入只有5个数字的供应商代码,就会自动转换为供应商公司的名字,还能保证不过出错!
我赶紧回到座位上查找相关资料,看看是如何实现的?不看不知道,原来实现起来也很简单。又学了一招。现在也迫不及待的分享给小伙伴们。具体实现效果如下:
是不是很神奇?很省时间?以后遇到很多会经常输入的东西,是不是都可以通过输入简单的编码实现?并且不会出错?
具体实现代码如下:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim SupplierCode As String
Dim MyRng As Range
Dim i As Long
Dim ResultRng As Range
If Target.Column = 1 And Target.Row > 1 And Target.Value <> "" Then
??? SupplierCode = Target.Value
??? With Worksheets("code")
??????? i = .Range("A1").End(xlDown).Row
??????? '从第二列开始查找
??????? Set MyRng = .Range(.Cells(2, 1), .Cells(i, 1))
??????? Set ResultRng = MyRng.Find(what:=SupplierCode)
??????? '如果没有查找到
??????? If ResultRng Is Nothing Then
??????????? Exit Sub
??????? End If
??????? '向右偏移一列找到数据
??????? Target.Value = ResultRng.Offset(0, 1).Value
??? End With
End If
End Sub
其中函数名称Worksheet_Change是Excel VBA自带的事件,作用是当worksheet中的单元格内容被改变时,激活此事件,执行此事件中的代码。
打开一个工作薄,点击工作表名称标签,选择“查看代码”命令进入VBE编辑窗口,在代码窗口的对象列表中选择“Worksheet”,在事件列表中选择“Change”,这时代码窗口中会出现一段代码:
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
相关说明如下:
Worksheet是对象名,Change是事件名称,对象名称和事件名称用下划线连接;
(ByVal Target As Range):括号里的是程序运行传递的参数,Target是一个Range对象,即单元格区域,指触发Change事件的单元格,也就是数值被修改了的单元格。
我们只需要将所需要执行的代码写在Sub与End Sub之间,这样,在工作表的某个单元格发生改变时,就自动执行Sub与End Sub之间的程序代码。
此文章我们分享了Excel单元格输入自动替换的知识,同时也让小伙伴们认识了worksheet的change事件,以后是不是我们可以将在工作中经常输入的重复信息都可以使用代码表示,而直接输入代码就可以实现相关内容的快速输入了。小伙伴们有什么想法,欢迎后台留言交流,想获取源文件的小伙伴们,也请扫描下方二维码,关注 吉祥编程 公众号 联系我吧。
cs