Excel的VBA:不能定义范围,得到错误的对象与块变量未设置
我试图确定在Excel中使用VBA的Range,Excel的VBA:不能定义范围,得到错误的对象与块变量未设置
Sub convertePerc()
Dim separador As String
Dim linhaInicial, linhaFinal, colunaInicial, colunaFinal, numAnos As Integer
Dim origem, destino As Range
separador = "DRES(G)"
colunaFinal = Sheets(separador).Cells(6, 5).End(xlToRight).Column
linhaFinal = 40
numAnos = 10
origem = Sheets(separador).Range(Cells(10, 4), Cells(linhaFinal, colunaFinal))
colunaInicial = CInt(4 + numAnos + 1)
colunaFinal = CInt(numAnos + colunaFinal + 1)
destino = Sheets(separador).Range(Cells(10, 4), Cells(11, 5))
End Sub
第一个范围origem
是否正确没有错误定义,但第二destino
抛出错误:
Object with block variable not set
在线:
destino = Sheets(separador).Range(Cells(10, 4), Cells(11, 5))
有人可以解释我为什么,以及如何解决这个问题?
在此先感谢!
范围是对象变量,对象变量需要Set。此外,对范围或单元格的非限定引用是活动工作表。所以
With Sheets(separador)
Set destino = Range(.Cells(10, 4), .Cells(11, 5))
End With
啊!不要忘记'Range'前面的'.'''设置destino = .Range(.Cells(10,4),。Cells(11,5))''。 – BruceWayne
除非第一个参数是一个字符串,否则没有必要,例如“D10” – shg
嗯 - 那是因为(并且对于缺乏词汇表示歉意),'Range()'查看'()'内部的内容确定'Range'的位置(工作表)?所以,既然我们指定我们在'Sheets(separador)'中使用'Cells()',那么'Range'部分理解?而使用'Range(“A10”)'不指定表格的任何地方,它会默认为活动表格? – BruceWayne
添加'set'盈方?另外'origem'被声明为变量类型变体fyi。 – findwindow
用低于 – shg
的响应替换'Dim origem,destino As Range'仅将'destino'定义为Range类型对象。 **与你的声明一起明确**。否则,在分配给对象变量时需要使用'Set'关键字。 –