相关文章推荐
怕考试的木耳  ·  软件分享库合集链接汇总推荐_蓝奏云软件分享链 ...·  5 月前    · 
精明的日记本  ·  江西省发布第三批非法集资严重失信人名单 ...·  1 年前    · 
奔放的梨子  ·  Creating Word ...·  2 年前    · 
奔跑的苦咖啡  ·  地藏菩萨本愿经讲记(第十三卷)·  2 年前    · 
愤怒的菠萝  ·  异兽魔都(林田球创作的系列漫画)_搜狗百科·  2 年前    · 
Code  ›  VBA专题02:使用代码进行复制操作开发者社区
单元格 社区功能 云数据 vba数组
https://cloud.tencent.com/developer/article/1467409
任性的菠菜
2 年前
作者头像
fanjy
0 篇文章

VBA专题02:使用代码进行复制操作

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > 完美Excel > VBA专题02:使用代码进行复制操作

VBA专题02:使用代码进行复制操作

作者头像
fanjy
发布 于 2019-07-19 15:54:14
3.7K 0
发布 于 2019-07-19 15:54:14
举报

学习Excel技术,关注微信公众号:

excelperfect

在Excel工作表中,复制粘贴是最常用的操作之一。在已经输入的数据中,找到并复制想要的数据,然后粘贴到指定的地方,是再自然不过的操作了。或者从工作表的一个单元格区域复制到同一工作表中另外的单元格区域,或者从工作表的一个单元格区域复制到另一工作表中的单元格区域,甚至从工作表的一个单元格区域复制到不同工作簿中的工作表单元格区域。那么,如何使用VBA代码来实现复制粘贴操作呢?本文将介绍常用的一些代码。

直接赋值

如下图1所示,使用代码:

Range("D1:E2").Value= Range("A1:B2").Value

将单元格区域A1:B2中的值直接复制到单元格D1:E2中。

图1

使用Copy方法

也可以使用Copy方法,将单元格区域A1:B2中的值复制到以单元格D1开头的单元格区域中:

Range("A1:B2").CopyRange("D1")

图2

使用数组

如下图3所示,将工作表Sheet4的列A中内容为“完美Excel”的行复制到工作表Sheet5中。

图3

可以使用下面的代码:

Sub CopyDataByArray()

Dim arr As Variant

Dim i As Long

Dim j As Long

Dim row As Long

row = 1

arr =Sheet4.Range("A1").CurrentRegion.Value

For i = LBound(arr) To UBound(arr)

If arr(i, 1) = "完美Excel" Then

For j = LBound(arr, 2) ToUBound(arr, 2)

Sheet5.Cells(row, j).Value =arr(i, j)

Next j

row = row + 1

End If

Next i

End Sub

代码中,将工作表Sheet4中的数据存储到数组中。然后,判断数组中第1维的值是否为“完美Excel”并复制到工作表Sheet5中。注意,数组变量必须声明为Variant型。

使用For循环

使用For循环,也可以实现上图3的结果。代码如下:

Sub CopyDataByFor()

Dim rng As Range

Dim i As Long

Dim j As Long

Dim row As Long

Set rng = Sheet4.Range("A1").CurrentRegion

row = 1

For i = 1 To rng.Rows.Count

If rng(i, 1).Value = "完美Excel" Then

For j = 1 To rng.Columns.Count

Sheet5.Cells(row, j).Value =rng(i, j).Value

Next j

row = row + 1

End If

Next i

End Sub

使用自动筛选

使用自动筛选,不必使用很多次循环,也能实现上图3所示的结果。代码如下:

Sub CopyDataByAutoFilter()

Dim rng As Range

Set rng = Sheet4.Range("A1").CurrentRegion

'删除已存在的筛选

rng.AutoFilter

'应用自动筛选

rng.AutoFilter Field:=1, Criteria1:="完美Excel"

'复制数据

Sheet4.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy

Sheet5.Range("A1").PasteSpecialxlPasteValues

'删除筛选

rng.AutoFilter

End Sub

使用高级筛选

高级筛选能够直接将满足条件的数据复制到指定的位置,但需要先指定条件。如下图4所示,工作表Sheet10中的单元格区域A1:B7为数据区域,单元格区域D1:D2为筛选条件,需要筛选出名称为“完美Excel”的数据至工作表Sheet11中。

图4

代码如下:

Sub CopyDataByAdvancedFilter()

Dim wksData As Worksheet

Dim wksFilter As Worksheet

Dim rngData As Range

Dim rngCriteria As Range

Set wksData =ThisWorkbook.Worksheets("Sheet10")

Set wksFilter =ThisWorkbook.Worksheets("Sheet11")

'清空要放置复制数据的工作表

wksFilter.Cells.Clear

'删除已存在的筛选

If wksData.FilterMode = True Then

wksData.ShowAllData

End If

'获取数据区域

Set rngData =wksData.Range("A1").CurrentRegion

'条件区域

Set rngCriteria =wksData.Range("D1:D2")

'筛选并获取满足条件的数据

rngData.AdvancedFilterAction:=xlFilterCopy, _

CriteriaRange:=rngCriteria, _

CopyToRange:=wksFilter.Range("A1")

End Sub

运行代码后的结果如下图5所示。

图5

高级筛选还可以处理多个条件,对于同一行中的条件关系为“AND”,对于不同行中的条件关系为“OR”。

提示

1. 在使用VBA代码进行复制操作时,我们不需要先选择想要复制的数据,也不需要选择或激活数据所在的工作表。

2. 在不同的工作表之间复制,或者在不同的工作簿之间复制时,在前面加上相应的工作表或工作簿名称。

3. 在复制前关闭Excel的某些功能,可以加速复制操作。一般,在复制代码前,使用下面的代码关闭相关的功能:

Application.Calculation =xlCalculationManual

Application.DisplayStatusBar =False

Application.EnableEvents =False

Application.ScreenUpdating =False

在复制代码完成后,再恢复相关的功能:

Application.Calculation =xlCalculationAutomatic

Application.DisplayStatusBar =True

Application.EnableEvents = True

Application.ScreenUpdating =True

本文参与 腾讯云自媒体分享计划 ,分享自微信公众号。
原始发表:2019-06-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除
vba

本文分享自 完美Excel 微信公众号, 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

vba
评论
登录 后参与评论
0 条评论
热度
最新
登录 后参与评论
关于作者
fanjy
0
文章
0
累计阅读量
0
获赞
前往专栏
领券
  • 社区

    • 专栏文章
    • 阅读清单
    • 互动问答
    • 技术沙龙
    • 技术视频
    • 团队主页
    • 腾讯云TI平台
  • 活动

    • 自媒体分享计划
    • 邀请作者入驻
    • 自荐上首页
    • 技术竞赛
  • 资源

    • 技术周刊
    • 社区标签
    • 开发者手册
    • 开发者实验室
  • 关于

    • 社区规范
    • 免责声明
    • 联系我们
    • 友情链接

腾讯云开发者

扫码关注腾讯云开发者

扫码关注腾讯云开发者

领取腾讯云代金券

热门产品

  • 域名注册
  • 云服务器
  • 区块链服务
  • 消息队列
  • 网络加速
  • 云数据库
  • 域名解析
  • 云存储
  • 视频直播

热门推荐

  • 人脸识别
  • 腾讯会议
  • 企业云
  • CDN加速
  • 视频通话
  • 图像分析
  • MySQL 数据库
  • SSL 证书
  • 语音识别

更多推荐

  • 数据安全
  • 负载均衡
  • 短信
  • 文字识别
  • 云点播
  • 商标注册
  • 小程序开发
  • 网站监控
  • 数据迁移

Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有

深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569

腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287

问题归档 专栏文章 快讯文章归档 关键词归档 开发者手册归档 开发者手册 Section 归档

Copyright © 2013 - 2023 Tencent Cloud.

All Rights Reserved. 腾讯云 版权所有

登录 后参与评论
 
推荐文章
怕考试的木耳  ·  软件分享库合集链接汇总推荐_蓝奏云软件分享链接网站汇总手机 - 骑士助手
5 月前
精明的日记本  ·  江西省发布第三批非法集资严重失信人名单 _ 防范金融风险 _ 南昌县人民政府
1 年前
奔放的梨子  ·  Creating Word Application using Excel VBA: Run-time error '429': ActiveX component can't create obje
2 年前
奔跑的苦咖啡  ·  地藏菩萨本愿经讲记(第十三卷)
2 年前
愤怒的菠萝  ·  异兽魔都(林田球创作的系列漫画)_搜狗百科
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号