复制选择并稍后粘贴它

时间:2015-01-07 12:01:29

标签: excel excel-vba vba

我需要存储选定的单元格并在将来使用它们的值。我将选择存储到范围对象的变量,然后我修改选定的单元格。我正在检查其他子程序中的结果,如果条件为假,那么我需要恢复与之前相同范围的值。

Public hi, hj As Integer

Public ActSheet As Worksheet

Public SelRange As Range

Sub per_num()


Dim cell As Object

Set ActSheet = ActiveSheet
Set SelRange = Selection
SelRange.Copy



For Each cell In Selection

    'perform some action

Next cell

hi = Selection.Row
hj = Selection.Column


End Sub

  Sub num_per()
     if something is false
     Cells(hi, hj).Select
     SelRange.PasteSpecial xlPasteFormats 
  End Sub

1 个答案:

答案 0 :(得分:0)

您的范围会创建对该组单元格的引用。您要问的是要求您将值写入内存。这应该按照你的要求行事:

Option Explicit

Public selArray As Variant    ' Add this global variable
Public SelRange As Range

Sub per_num()

Dim cell As Range
Set SelRange = Selection
selArray = SelRange    ' Returns the values from your range into a variant

For Each cell In Selection
    'perform some action
Next cell

End Sub

Sub num_per()
   ' if something is false
   SelRange = selArray     ' Writes the values from the variant back into the range
   Set SelRange = Nothing
   If IsArray(selArray) Then Erase selArray
End Sub

在per_num子句中,它创建对您的选择的引用,并将值写入selArray变量。

在num_per子中,它将值写回到您的范围所引用的单元格中。

*值得注意的是,如果您只选择了一个单元格,则selArray实际上不会成为一个数组,命名只是我最初尝试的一个宿醉。