将范围地址保存为单元格值,在VBA中稍后使用

我有一个运行if-then语句的代码。 它会询问用户是否要重新select一个范围,如果不是,则使用最后一个范围。 我得到了第一部分,但是当我存储范围的地址,我不知道如何callback。 请参阅下面的代码。

NewNS = MsgBox("Would you like to pick new Force ID's in the North-South direction?", vbYesNo, "Roof North-South") If NewNS = vbYes Then Worksheets("ShearWalls").Activate Do Until CheckNS = vbYes On Error Resume Next Set rngNS = Application.InputBox("Select your Force ID's (North-South)", "Roof North-South", Type:=8) On Error GoTo EndJump CheckNS = MsgBox("The cells selected were " & rngNS.Address & " for North-South. Is this correct?", vbYesNo, "Roof North-South") Loop Worksheets("Reference").Range("B739").Value = rngNS.Address Else Setrng = Worksheets("Reference").Range("B739").Value Set rngNS = Range(Setrng) End If 

我知道它可以在某些方面简化,我只是想确保它的工作。 谢谢!

使用存储为单元格值的地址构build范围。 您正在使用Worksheets("ShearWalls").Activate但不限制Range("B739")存储的地址的父项。

虽然从叙述中不清楚你正在尝试引用哪个工作表,但我会假设你想要的是参考工作表的范围,而不是ShearWalls工作表。

 with Worksheets("Reference") Setrng = .Range("B739").Value2 Set rngNS = .Range(Setrng) end with