|
本帖最后由 月关 于 2019-8-20 18:45 编辑
各位老师好!
下午练手,尝试写一个自动填充事件:
在A列输入数据,如果前面已经输入过,则B列、C列自动补全,——A列的数据有可能会有重复,即同一个代码,可能会手动修改后面B/C列的数据,所以B列和C列填充的是最后一次输入的数据。
写了段代码,感觉逻辑上没啥错误,但就是没反应,还请老师们出手点拨一下,谢谢!
代码如下,比较简单,老师们应该不下载附件也能看出来。
- Private Sub Worksheet_Change(ByVal Target As Range)
- If Target.Column > 1 Then Exit Sub '不在A列输入退出程序
- If Target.Count > 1 Then Exit Sub 'A列单元格多选退出程序
- If Target.Value = "" Then Exit Sub 'A列单元格输入为空退出程序
- Set d = CreateObject("scripting.dictionary")
- arr = Sheet1.UsedRange '将表中数据装入数组,便于后续取值
- If d.exists(Target.Value) Then '如果Key存在,在数组中查找最后一次Key所在的行数进行数据填充
- For i = 1 To UBound(arr)
- Target(1, 2).Value = arr(d(Target.Value), 2) 'B列填充
- Target(1, 3).Value = arr(d(Target.Value), 3) 'C列填充
- Next
- End If
- d(Target.Value) = Target.Row '写入Key,或修改Item最后一次输入Key的行数
- End Sub
复制代码
自动填充.rar
(13.66 KB, 下载次数: 5)
|
|