请问Excel中用VBA时,假设含有字符变量a,b,x,y,如果想用range选定区域,怎样选定区域(x,y)到(a,b)?

如题所述

第1个回答  2013-01-31
range(起始单元格,终止单元格)
range(cells(行号,列号),cells(行号,列号))

不知道你的变量a,b,x,y 中保存的是什么
行,列号?单元格地址?
如果是行列号那么
range(cells(a,b),cells(x,y)).select
如果是单元格地址 比如:
range(range(a),range(y)).select
实际例程:
Sub aa()
Dim a, b, x, y As Long
a = 1
b = 3
x = 5
y = 7
Range(Cells(a, b), Cells(x, y)).Select
MsgBox "选定的范围是:" & Selection.Address(0, 0)
End Sub
Sub bb()
Dim a, b, x, y As String
a = "A1"
b = "B3"
x = "C5"
y = "D7"
Range(Range(a), Range(y)).Select
MsgBox "选定的范围是:" & Selection.Address(0, 0)
End Sub追问

我测试了一下,用您的可以,但是前面加上worksheets就不行了,请问原因是不是在这里?
我用的例子如下,提示错误“运行时错误‘1004’,应用程序定义或对象定义错误”
Sub copytry()
Dim a, b, x, y As Long
a = 1
b = 2
x = 6
y = 7
Worksheets("down").Range(Cells(a, x), Cells(b, y)).Select
End Sub
提示错误是

追答

你只是指明了range函数的父对象,而cells的父对象没有指明,
如果你两个都不指定那么默认的都是当前激活的工作表.如果你指明了其中一个那么另外一个也要指定.
Sub copytry()
Dim a, b, x, y As Long
a = 1
b = 2
x = 6
y = 7
with worksheets("down")
.Range(.Cells(a, x),.Cells(b, y)).Select
end with
End Sub

第2个回答  2013-01-31
选定区域可以用CELLS和RANGE配合:
RANGE(CELLS(a,b), CELLS(x,y))追问

是我没问清楚,抱歉,选定是可以的,但是运行 .copy 等命令时会出错,请问是什么原因?有什么解决办法吗?

追答

通常COPY命令应该不会有问题
不知是怎样的错误提示?
试试在RANGE对象前完整引用父对象,像这样:
worksheets("Sheet1").range(cells(a,b), cells(x,y)).copy destination:=...

追问

不行,不论a,b,x,y定义为integer还是string,都会提示“运行时错误‘1004’,应用程序定义或对象定义错误”
现在简要的测试程序如下,请指点,谢谢
Dim a, b, x, y As Integer
a = 1
b = 2
x = 6
y = 7
Worksheets("down").Range(Cells(a, x), Cells(b, y)).Copy Destination:=Worksheets("汇总").Cells(63, 2)

追答


对了,cells引用也需要指定父对象:
Worksheets("down").Range(Worksheets("down").Cells(a, x), Worksheets("down").Cells(b, y)).Copy _
Destination:=Worksheets("汇总").Cells(63, 2)

简化为:
With Worksheets("down")
.Range(.Cells(a, x), .Cells(b, y)).Copy Destination:=Worksheets("汇总").Cells(63, 2)
End With

追问

原来是这样,谢谢,麻烦您啦,对我这个新手还是很有用的:)
加点分,其他朋友也帮了很多,但是因为只能给一个人,其他朋友抱歉啦,一并感谢!

本回答被提问者采纳
第3个回答  2013-01-31
Private Sub CommandButton1_Click()
Dim a, b, x, y As String
a = "a"
b = "b"
x = "1"
y = "6"
Range(a & x & ":" & b & y).Select
End Sub
随便举的一个例子,用按钮运行的追问

如果a赋值为某一个数字,比如“13”,那是不是只能用cells嵌套?是否有办法?(比如通过char指令转换?)另外,我没问清楚,其实我之前也是用cells嵌套的,但是在.copy时会有问题,如楼下追问内容,谢谢。

追答

可以用的cells嵌套,但定义为整型的好,我不知道你为什么要变量是字符。
如果是整型,可以这样Range(Cells(a, x), Cells(b, y)).Select

追问

对,是用的整形,现在我发现不是range嵌套的问题,而是我在前面加了非活动表格的部分,比如当前活动表格是“汇总”,而如果语句是worksheets("down").range(cells(a,b),cells(x,y)).select 就会出现错误提示。是不是我的语法表述有问题?

追答

那样确实有问题,如果表格名字是“汇总”的话,那你的语句也应该是指向“汇总”,worksheets("汇总").range(cells(a,b),cells(x,y)).select

第4个回答  2013-01-31
Range(cells(x,y),cells(a,b))
相似回答