Excel VBA 每日一场景 点击数据 即可实现录入 告别复制粘贴
在我们的日常做数据,做表格的过程中,相信大家用的最多的操作方式就是数据的复制粘贴了。
为什么呢?
毕竟有时候,数据实在太复杂,就像我们上节所说的数据那样,又有大小写又有数组又有中文的,这样来回的切换输入法,对于我们日常的工作来说,是很大的麻烦
所以更多时候,我们还是会选择复制粘贴来进行数据的录入
不过复制粘贴有时候也不一定能实现效果,因为复制粘贴,你还会把数据的格式,公式也一起粘贴过来,这也是比较麻烦的事情
那你又不得不进行二次处理,或者在粘贴的时候右键选择对应的粘贴内容
这个工作量太大了
那么有没有一种更加快捷的数据录入方法呢?
今天我们来学习一种新方法,那就是通过vba来实现单击数据,即可将数据录入指定区域的方法
这样大家的工作效率又可以提升一倍了。
我们还是以昨天的案例为蓝图
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim sth As Worksheet, sth1 As Worksheet, arr(), frng As Range, rng As Range Set sth = ActiveSheet Set sth1 = Worksheets("目录") If Target.Column = 1 Then y = Target.Row x = y l = sth1.Cells(Rows.Count, x).End(xlUp).Row sth.Columns(2) = "" For i = 1 To l Cells(i, 2) = sth1.Cells(i, x) Next i End If If Target.Column = 2 Then s = Cells(1, 2) With ActiveSheet.UsedRange.Rows(1) Set rng = .Find(s, SearchDirection:=xlPrevious) col = rng.Column End With l1 = sth.Cells(Rows.Count, col).End(xlUp).Row + 1 sth.Cells(l1, col) = Target End If End Sub
上面是我们今天的代码,依然是利用了单元格的事件功能
来,我们先来看看最终的效果如何
效果很明显,非常轻松的就实现了我们的效果
只需要在你想要录入的数据所在的单元格上面点击一下,相应的数据就会迅速的录入到对应的分类下
这样录入数据远比你用键盘去复制粘贴要快很多啊。
而且最重要的一点就是,这样不会出错
代码解析
那么来看看今天的代码
今天还是用了单元格的事件功能
和上一节的代码相比,最大的不同就是这里我们多了几个判断,来看看
这两个的判断就是我们判断单那段元格点击事件的区域的
因为这个单元格点击事件,适用于整个excel的所有单元格,意思就是说只要你点击这个工作表的任意一个单元格,那么都会触发这个事件功能
但是呢
我们在今天的事件功能,只针对第一列和第二列这两列有效
所以在这里我们需要增加两个判断,那就是去判断点击这个事件是发生在第一列还是第二列的
如果实在第一列,那么我们就只需要去执行上节的代码,去更新数据就可以了
如果点击发生在第二列,那我们就要去执行今天的代码去粘贴数据了。
OK
我们来继续往下走
既然现在已经已经在第二列点击了单元格,那么我们要复制数据了。
这个时候数据是随便复制的吗?
当然不是,我们还要找到对应的类别,在对应的区域进行粘贴
那么如何找到对应的类别所在的区域呢
用我们熟悉的单元格查找功能
s = Cells(1, 2)
With ActiveSheet.UsedRange.Rows(1)
Set rng = .Find(s, SearchDirection:=xlPrevious)
col = rng.Column
End With
得到的这个rng之后,我们就可以利用rng.Column得到列数了,这个列数就是类别所在的列
有了这个列数之后,剩下的就很简单了。
或者这一列的最后一个非空单元格,然后就可以直接填充数据了。
填充其实就相当于是数据的复制粘贴了,这里粘贴过来的,而也不会格式,公式等问题的干扰
非常的方便