VBA 单元格基本操作 - 复制 粘贴 区域选择
发布时间
阅读量:
阅读量
本期主要讲讲单元格复制粘贴等操作。
一、复制粘贴固定区域的单元格
由于这些内容均属于复制单个或固定区域的单元格内容,无需多言即可理解。详细信息均在备注中说明。
Option Explicit
Sub CopyRange()
'复制单元格内容示例1
'注意:单元格的格式、公式、批注等也会被复制过去哟
Sheets(1).Range("A1").Copy Sheets(1).Range("B1")
End Sub
AI写代码
Sub CopyRange2()
'复制单元格内容示例2,打开了下面2个工作表后,就可以通过工作表的名称进行复制啦
Workbooks("测试表1.xlsx").Sheets(1).Range("A1").Copy _
Workbooks("测试表2.xlsx").Sheets(1).Range("A1")
End Sub
AI写代码
Sub CopyRange3()
'复制单元格内容示例3,和上面几乎一样
Dim rng1 As Range, rng2 As Range
Set rng1 = Workbooks("测试表1.xlsx").Sheets(1).Range("A1")
Set rng2 = Workbooks("测试表2.xlsx").Sheets(1).Range("A1")
rng1.Copy rng2
End Sub
AI写代码
Sub CopyRange4()
'复制单元格内容示例4,复制区域,选择一个单元格进行粘贴
Sheets(1).Range("A1:D5").Copy Sheets(2).Range("A1")
End Sub
AI写代码
Sub MoveRange1()
'移动(剪切)单元格内容示例1。
'注意:单元格的格式、公式、批注等也会被剪切过去哟
'就是把Copy换成了Cut,其他几乎一样
Sheets(1).Range("A1").Cut Sheets(1).Range("B1")
End Sub
AI写代码
二、复制粘贴可变单元格区域
主要涉及的是某个特定区域的问题。接下来要探讨的是那些可能会发生变化的区域。例如,在一个表格中新增一行后,复制后的区域发生了变化。是否有一种较为简便的方法来应对这种情况呢?
加个CurrentRegion就可以实现,用法如下。
Sub CopyCurrentRange()
'复制范围会变动的表格
Sheets(1).Range("A1").CurrentRegion.Copy Sheets(2).Range("A1")
End Sub
AI写代码

通过查看上面的图表可以看出,在第15行数据中张三点击运行后能够顺利地被复制到其他地方。如果需要复制的数据表包含标题信息以及日期行或者是在筛选过后的数据列表中则仍然能够实现有效的数据转移
假设复制的目标区域是一个表格,则可以采取以下措施(这种方案显得更加繁琐,并没有多大的实用价值)。
第一 ,插入表格

在第2部分,请在插入表格后,在设计页面中的表名称处进行renamed操作,并命名为Table111

第三 :这么操作就可以把表复制过去啦。
Sub CopyTable()
Sheets(1).Range("table111").Copy Sheets(2).Range("A1")
End Sub
AI写代码
在实际操作过程中发现该方法并不十分便捷;另外值得提及的是Range对象中的End属性;该属性在2015年7月29日发布的相关文档中已有记载
Sub RangeEnd()
'从A10000往上数,遇到有数据的最下面一行
Debug.Print Sheets(1).Range("A10000").End(xlUp).Row
'从A1往下数,有数据的最下面一行
Debug.Print Sheets(1).Range("A1").End(xlDown).Row
'从Z1往左数,有数据的最右边一列
Debug.Print Sheets(1).Range("Z1").End(xlToLeft).Column
'从A1往右边数,有数据的最右边一列
Debug.Print Sheets(1).Range("A1").End(xlToRight).Column
End Sub
AI写代码
如果我们的表格范围设置为A1到D17区域,则具体数值则为两个17和两个5。需要注意的是,在所选单元格所在行及列不得为空的情况下,默认会返回该单元格所在行列的交点位置。这可能导致返回的单元格与实际位置存在一定偏差。
三、调整单元格区域
通过RangeResize功能可以对单元格区域进行重新配置,在此操作中左侧参数代表行号(即需要调整的起始行),右侧参数代表列号(即需要调整的起始列)。
另外需要注意的是,调整后的区域是从原来区域左上角开始框哟。
例如,在某个案例中
Sub RangeResize()
Dim rng As Range
Set rng = Range("B2:D6")
Set rng = rng.Resize(8, 5)
End Sub
AI写代码
全部评论 (0)
还没有任何评论哟~
