Excel 如何将所有工作表内容保存在变量中,然后将其返回到工作表?
我有一张很大的数据表,在我运行一些代码后会发生变化。 在运行代码之前,我正在考虑一种让所有这些数据恢复活力的方法。我希望在不创建任何新工作表的情况下执行此操作—只需将值存储在对象/变量中,并在运行代码后返回 我试过做类似的事情Excel 如何将所有工作表内容保存在变量中,然后将其返回到工作表?,excel,vba,Excel,Vba,我有一张很大的数据表,在我运行一些代码后会发生变化。 在运行代码之前,我正在考虑一种让所有这些数据恢复活力的方法。我希望在不创建任何新工作表的情况下执行此操作—只需将值存储在对象/变量中,并在运行代码后返回 我试过做类似的事情 Dim myrng As Range myrng = sheets(x).Usedrange 'storing the sheet contents SheetS(x).Range("A1") = myrng 'bringing back original shee
Dim myrng As Range
myrng = sheets(x).Usedrange 'storing the sheet contents
SheetS(x).Range("A1") = myrng 'bringing back original sheet contents to the same sheet
我知道这可能看起来很愚蠢,但我真的不知道我是否应该做一些复制粘贴应用程序或任何事情。这将起作用:
Dim rng As String
Dim dat() As Variant
rng = Sheets(x).UsedRange.Address
dat = Sheets(x).UsedRange.Value 'storing the sheet contents
'Do changes on Sheet
Sheets(x).Range(rng) = dat()
说明:
Dim rng As String
Dim dat() As Variant
rng = Sheets(x).UsedRange.Address
dat = Sheets(x).UsedRange.Value 'storing the sheet contents
'Do changes on Sheet
Sheets(x).Range(rng) = dat()
- 将
的地址保存在UsedRange
字符串中
- 将
的内容保存在UsedRange
数组中
- 在第一步中,将
粘贴回保存的地址数组
UsedRange
只存储地址。就像在现实生活中一样,你的家庭住址,但与谁住在那里无关。这可能会改变,但地址不会是的,这是我的想法。那个么我如何存储内容呢?最简单的方法是创建一个新的工作表,并在操作完成后删除。但由于您不想这样做,您可以创建一个数组并将UsedRange的所有值保存在其中。然后您可以循环并打印回去。@JurasSulcas,如果您以编程方式创建了一个新工作表,复制了该范围,然后在粘贴回来后将其删除(全部以编程方式?)@JurasSulcas.请参见答案。您可以将内容保存在数组中,然后像那样将其打印回来。请尝试避免使用UsedRange
。请参考此答案:@GangulaUsedRange
适用于这种情况。您指的是通过UsedRange.Rows.Count
或UsedRange.Columns.Count
从UsedRange
获取绝对行/列。在这种情况下,第1行到第500.000行是否为空并不重要,因为UsedRange.Address
仍将为我们提供第500.001行的地址。谢谢@Nacorid,我没有意识到这一点。