首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Excel VBA选择多个动态范围

Excel VBA选择多个动态范围
EN

Stack Overflow用户
提问于 2014-02-07 07:40:54
回答 3查看 31.8K关注 0票数 4

我正在尝试选择多个动态范围。尝试使用联合方法时,我在第一个设置行上得到了'object‘全局失败错误的方法'Range’。

代码语言:javascript
运行
复制
Dim LR As Long
LR = Range("A60000").End(xlUp).Row

Dim R1, R2, R3, R4, R5, MultiRange As Range
Set R1 = Range("A7,:A" & LR)
Set R2 = Range("D7,:D" & LR)
Set R3 = Range("G7,:G" & LR)
Set R4 = Range("H7,:H" & LR)
Set R5 = Range("J7,:J" & LR)
Set MultiRange = Union(R1, R2, R3, R4, R5)
MultiRange.Select
Selection.Copy
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-07 07:48:33

出现此问题的原因是范围语句中的逗号。也就是说,当你设置R1时,你应该这样写:

代码语言:javascript
运行
复制
Set R1 = Range("A7:A" & LR)

此外,当您定义变量R1,...,R5的对象类型时,您应该将其编写为

代码语言:javascript
运行
复制
Dim R1 As Range, R2 As Range, R3 As Range, R4 As Range, R5 As Range, MultiRange As Range

否则,R1,...,R5将被定义为变体。这不会造成问题,但它将节省内存,并使代码更整洁。

票数 7
EN

Stack Overflow用户

发布于 2014-02-07 10:13:55

您也可以这样设置它:

代码语言:javascript
运行
复制
Set R1 = Range("A7","A" & LR)

你所做的是把范围语法搞混了。

下面是一些常见的范围语法:

使用 Range**:** 定义

代码语言:javascript
运行
复制
Range("A1:A" & LR) '~~> where LR holds the last row number

使用 Range**:** 定义

代码语言:javascript
运行
复制
Range("A1","A" & LR)

使用 Cells 属性的:

代码语言:javascript
运行
复制
Range(Cells(1, "A"),Cells(LR, "A"))
Range(Cells(1, 1),Cells(LR, 1)) '~~> another way

使用 Range 属性的:

代码语言:javascript
运行
复制
Range(Range("A1"),Range("A" & LR))
Range(Range("A1").address & ":" & Range("A" & LR).Address) '~~> yet another complicated way

以上所有语法的计算结果均为:$A$1:$A$(LR)

每种方法都有一定的优点和用途。

使用您最熟悉的语法。

附加:

这个使用的是Intersect Function

代码语言:javascript
运行
复制
Set R1 = Intersect(Columns("A:A"),Rows("1:" & LR))
票数 4
EN

Stack Overflow用户

发布于 2021-09-10 17:32:03

我认为您的代码的问题在于您在A7,D7,.....之后放了逗号",“"Set R1 = Range("A7,:A“& LR)”尝试以下代码:

代码语言:javascript
运行
复制
Sub JubaTest()

Dim LR As Long
Dim R1, R2, R3, R4, R5, MultiRange As Range

LR = Range("A60000").End(xlUp).Row

Set R1 = Range("A7:A" & LR)
Set R2 = Range("D7:D" & LR)
Set R3 = Range("G7:G" & LR)
Set R4 = Range("H7:H" & LR)
Set R5 = Range("J7:J" & LR)
Set MultiRange = Union(R1, R2, R3, R4, R5)
MultiRange.Select

End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21616455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档