Advertisement

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)

还没有任何评论哟~