我需要存储选定的单元格并在将来使用它们的值。我将选择存储到范围对象的变量,然后我修改选定的单元格。我正在检查其他子程序中的结果,如果条件为假,那么我需要恢复与之前相同范围的值。
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
答案 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实际上不会成为一个数组,命名只是我最初尝试的一个宿醉。