我正在使用Excel Visual Basic编辑器在VBA中编码Excel宏。我无法弄清楚如何复制/克隆范围对象,而不是为同一对象创建第二个引用。
MemberwiseClone()函数似乎不可用。我认为它将针对内置类型实现。我需要自己实施吗?
为了弄清楚这一点,我可能对VBA,Visual Basic和Visual Basic .Net之间的区别有所了解。
Variant
对象来涵盖大多数用例。这样就产生了一个可变数组,您可以在内存中根据您的心脏内容对其进行操作。Dim originalRange As Range, rangeCopy As Variant
' ...
rangeCopy = originalRange.Value
要使其正常工作,需要考虑一些事项:
该对象必须声明为
Variant
-不要声明Variant数组,否则它将失败。
rangeCopy(row, column)
。Sub RangeCopyTest()
Dim originalRange As Range, rangeCopy As Variant
With ActiveWorkbook.Worksheets(1).ListObjects(1)
' Range object
Set originalRange = .ListRows(1).Range
' Make a copy (into an array) - values only
rangeCopy = originalRange.Value
' Manipulate array
' Note: resulting array is ALWAYS 2-dimensional (row, column)
rangeCopy(1, 1) = 2
rangeCopy(1, 2) = "copy"
rangeCopy(1, 3) = rangeCopy(1, 3) - 1
rangeCopy(1, 4) = rangeCopy(1, 4) / 2
' Insert the copy back in
.ListRows.Add
.ListRows(2).Range.Value = rangeCopy
End With
End Sub