命名dynamic范围并将其变成一个variables

我想命名一个基于.Find的范围,然后定义该范围作为我的variables,所以我可以inputvariables到一个不同的function。 当我运行代码时,我得到一个types不匹配的错误。

Sub Faked() Dim r As Range Cells.Find(What:="EE status", After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False).Activate Range(Selection, Selection.End(xlDown)).Name = "Win" Set r = ("Win") End Sub 

因为斯科特这样说。 尝试Set r = range("Win")

为了testingr是否正确地select了范围,可以这样做

 for each c in r debug.print c next 

编辑:如果你像德克一样酷,

 Set r = [Win] 

用下面的代码replace:

  Dim r As Range Cells.Find(What:="EE status", After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False).Activate Set r = Range(Selection, Selection.End(xlDown)) r.Name = "Win" 

说明:

您不能使用SET命令和range对象的name属性。 该对象需要首先使用范围select来填充,然后才可以使用该对象的属性为其分配值,在这种情况下,该属性的Name属性。

希望有所帮助!