有没有办法在excel宏中保存一行以备将来使用?

有没有办法在excel宏中保存一行以备将来使用?,excel,excel-2003,vba,Excel,Excel 2003,Vba,我正在构建一个宏,将一个长表拆分为多个smalls表,我希望将标题保存在一个变量中,以便能够快速将其粘贴到smalls表的顶部 我做了一个宏来做第一个非常简单 Sheets("Feuil1").Select Rows("2:2").Select Selection.Copy Sheets("PageImpression").Select Rows("2:2").Select ActiveSheet.Paste 如何保留所选内容。在变量中复制,以及在需要时如何粘贴?答案是将行存储到变量中。然后在

我正在构建一个宏,将一个长表拆分为多个smalls表,我希望将标题保存在一个变量中,以便能够快速将其粘贴到smalls表的顶部

我做了一个宏来做第一个非常简单

Sheets("Feuil1").Select
Rows("2:2").Select
Selection.Copy
Sheets("PageImpression").Select
Rows("2:2").Select
ActiveSheet.Paste

如何保留所选内容。在变量中复制,以及在需要时如何粘贴?

答案是将行存储到变量中。然后在需要时调用该变量。此外,无需复制/粘贴并选择以下各项:

Option Explicit

Dim myHeader as Variant

myHeader = Sheets("Feuil1").Rows(2)

Sheets("PageImpression").Rows(2) = myHeader
更新

要与范围对象一起使用,请执行以下操作:

Dim myHeader As Range

Set myHeader = Sheets(1).Rows(2)

Sheets(2).Rows(2).Value = myHeader.Value
更新2

更干净的内存+节省时间的方法是:

Option Explicit

Dim myHeader as Variant (or Range)

With Sheets("Feuil1")

    myHeader = .Range(.Range("A1"),.Range("A" & .Columns.Count).End(xltoLeft).Column))
    'for variable type Range, add "Set =" in front of line above

End With

Sheets("PageImpression").Range("A2") = myHeader
'For Range Sheets("PageImpression").Range("A2").Value = myHeader.Value

哇,太简单了。。。但是为什么不使用VarType的“Range”呢?@Kraz->因为您需要变量或数组,也可以使用VarType写回Range。您可以通过使用范围来调整它,但您的代码必须更加明确。我已经编辑了关于如何使用范围进行更正的答案。您是否建议使用.end语句仅基于行中包含标题的单元格的数组创建数组,而不是选择整行并创建包含16000多个索引的数组,或者差异可以忽略不计?@scott-好问题!我建议仅基于带有标题的行中的单元格创建数组。任何时候你可以节省内存,你应该!我在这里不太关注它,因为我不想用概念轰炸OP。但既然你问了,我正在更新我的帖子。