2016-11-23 74 views
1

我的目標是將一個單元格及其所有屬性和值保存在一個範圍數組中,然後將該單元格的所有屬性和值寫回另一個單元格從數組(如複製粘貼功能,但從數組粘貼)。Excel vba:將所有屬性分配給範圍數組中的單元格

下面是一個簡單的測試程序:

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。細胞(2,3)有像字體樣式,格式,顏色,評論等。

但是,當我試圖寫這個範圍從數組到另一個空單元格,它只寫入值...

任何想法如何編寫數組中的所有屬性,就像它是一個從工作表複製/粘貼?

+1

嘗試:'Range_Grid(1).Copy ActiveSheet.Cells(4,1)' –

+0

感謝它的工作方式。 但我剛剛意識到,保存在數組中的範圍並不是真正的保存爲獨立實體,我的意思是它似乎是指向表單元格的指針。因此,如果在Set Range_Grid(1)= ActiveSheet.Cells(2,3)之後,我會手動更改工作表上該單元格的值和屬性以獲取空單元格,然後是Range_Grid(1).Copy ActiveSheet。細胞(4,1)離開細胞(4,1)也是空的... – BenDev

回答

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 

不幸的是大概有十幾種類型的格式,你可能想在任何給定的時間處理...

+0

謝謝。我已經編寫了一個完整的函數,基於保存屬性的分隔部分以在需要時檢索它們。所以我正在尋找一個完整的物業解決方案。我猜這裏沒有真正的解決方案,因爲我在這個主題上發了很多論壇,人們總是說他們認爲沒有真正的解決方案。 – BenDev

0

還有一種替代方法:使用複製和粘貼特殊功能。

Sub Test() 

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

End Sub 
+0

感謝您的選擇。但事實上,在這裏,您只需從工作表複製/粘貼到工作表。我的目標是將一張表格從一張表格中保存到一個數組中,然後將原始表格中的任何內容從數組中粘貼到表格中。這是關於處理一個引擎的撤銷 - 重做功能,因爲撤消堆棧會被Excel自動清除,當代碼在表單上寫入內容時... 所以我已經創建了一個引擎,它可以正常工作像價值,文字,顏色等幾個屬性...但通過單獨保存屬性起作用。 – BenDev

相關問題