Excel vba:将所有属性分配给范围为

时间:2016-11-23 16:31:26

标签: arrays excel-vba vba excel

我的目标是将一个Cell及其所有属性和值保存在一个范围数组中,然后将该单元格的所有属性和值写回到数组中的另一个单元格(如复制粘贴函数,但从数组中粘贴) )。

这是一个简单的测试程序:

Sub Test()
    Dim Range_Grid(1) As Range
    Dim CellAdress As String
    Dim i As Long

    Set Range_Grid(1) = ActiveSheet.Cells(2, 3)
    ActiveSheet.Cells(4, 1) = Range_Grid(1)
End Sub

所以这里在数组Range_Grid(1)的第一个元素中,我真的得到了全范围保存,我可以访问ActiveSheet.Cells(2,3)原始范围的每个属性,如字体样式,格式,颜色,评论等..

但是当我尝试将此范围从数组写入另一个空单元格时,它只会写入值...

知道如何从数组中编写所有属性,就好像它是从表到表的复制/粘贴一样吗?

2 个答案:

答案 0 :(得分:0)

无法一次将所有格式从数组中的范围移回excel。这将为您提供两个选项:您可以像Scott Craner建议的那样在excel中复制,也可以单独复制每种类型的格式。例如,如果要复制值(这是默认值,因此是原始代码中复制的值)和单元格背景颜色,则可以使用以下代码:

Sub Test()
    Dim Range_Grid(1) As Range

    Set Range_Grid(1) = ActiveSheet.Cells(2, 3)
    ActiveSheet.Cells(4, 1) = Range_Grid(1)
    ActiveSheet.Cells(4, 1).Interior.ColorIndex = Range_Grid(1).Interior.ColorIndex
End Sub

不幸的是,您可能希望在任何给定时间处理十几种格式......

答案 1 :(得分:0)

还有另一种选择:使用Copy和PasteSpecial函数。

Sub Test()

    ActiveSheet.Cells(2, 3).Copy
    ActiveSheet.Cells(4, 1).PasteSpecial(xlPasteAll)

End Sub