命名动态范围并将其转换为变量

Ton*_*nyP 2 excel vba excel-vba

我试图基于a命名一个范围.然后将该范围定义为我的变量,这样我就可以将变量输入到另一个函数中.当我运行代码时,我得到一个类型不匹配错误.

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
Run Code Online (Sandbox Code Playgroud)

fin*_*dow 6

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

要测试是否r正确选择了范围,可以做到

for each c in r
    debug.print c
next
Run Code Online (Sandbox Code Playgroud)

编辑:或者如果你像Dirk一样酷,

Set r = [Win]
Run Code Online (Sandbox Code Playgroud)


UnE*_*ter 5

用以下代码替换代码:

    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"
Run Code Online (Sandbox Code Playgroud)

说明:

您不能将SET命令与范围对象的name属性一起使用.首先需要使用范围选择填充对象,然后您可以使用对象的属性为其指定值,在本例中为它的Name属性.

希望有所帮助!

  • 很高兴提供帮助,只是不要忘记跟踪代码中的所有对象变量...给他们一个易于理解的名称,如"rngMyEmployeeStatus"等等......!;) (2认同)