就是。在.范围内,必要时由.Cells定义?

就是。在.范围内,必要时由.Cells定义?

人们普遍认为,这不是“最佳实践”。

dim rng as rangewith thisworkbook    '<~~ possibly set an external workbook 
    with .worksheets("sheet1")
        set rng = .range(cells(2, 1), cells(rows.count, 1).end(xlup))
    end withend with

两人Rang.Cells属性定义距离对象将默认为ActiveSheet属性..如果这不是Sheet 1(定义为.父母带着.。以语句结尾),任务将失败,

Run-tim error '1004': Application-defined or object-defined error

解决方案:使用.CellsCells..案子结了。

但是.。

.在这方面是必要的距离对象定义时,两个Rang.Cells属性继承.父母属性中定义的工作表属性。带着.。以语句结尾?

这怎么能

dim rng as rangewith thisworkbook    '<~~ possibly set an external workbook 
    with .worksheets("sheet1")
        ' define rng as Sheet1!A2 to the last populated cell in Sheet1!A:A
        set rng = .range(.cells(2, 1), .cells(rows.count, 1).end(xlup))  '<~~ .range
    end withend withdebug.print rng.address(0, 0, external:=true)

..与此不同,

dim rng as rangewith thisworkbook    '<~~ possibly set an external workbook 
    with .worksheets("sheet1")
        ' define rng as Sheet1!A2 to the last populated cell in Sheet1!A:A
        set rng = range(.cells(2, 1), .cells(rows.count, 1).end(xlup))  '<~~ range not .range
    end withend withdebug.print rng.address(0, 0, external:=true)

我们用.range当定义范围的参数不明确时;.range([A1])这个A1单元格可以来自任何工作表,并且将默认为ActiveSheet属性没有...但是,当定义Range对象的作用域正确引用其父工作表时,为什么需要引用Range对象的父对象呢?


郎朗坤
浏览 511回答 3
3回答

慕哥9229398

我的看法在这里略有不同。是这是必需的。您不能总是控制用户可以从哪里运行代码。请考虑这几个测试用例。假想工作簿有两个工作表。表1和页2测试1(从模块运行)两个代码都给出了相同的结果测试2(从Sheet 1的工作表代码区域运行)两个代码都给出了相同的结果测试3(从Sheet 2的工作表代码区域运行)'~~>&nbsp;This&nbsp;code&nbsp;failsset&nbsp;rng&nbsp;=&nbsp;range(.cells(2,&nbsp;1),&nbsp;.cells(rows.count,&nbsp;1).end(xlup))你会得到Application Defined or Object defined误差因此,建议对象进行适当的限定,以便代码可以在任何地方运行。

PIPIONE

不,.如果括号内的单元格引用是限定的,则不需要,除非代码位于Worksheet模块。就是说跑得更快set rng = .range(.cells(...), .cells(...))比跑set rng = range(.cells(...), .cells(...))所以包括.有好处。为了Worksheet模块,.是必需的。
打开App,查看更多内容
随时随地看视频慕课网APP