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.ColumnEnd With

得到的这个rng之后,我们就可以利用rng.Column得到列数了,这个列数就是类别所在的列

有了这个列数之后,剩下的就很简单了。

或者这一列的最后一个非空单元格,然后就可以直接填充数据了。

填充其实就相当于是数据的复制粘贴了,这里粘贴过来的,而也不会格式,公式等问题的干扰

非常的方便

(0)

相关推荐