Vba 范围(单元格(…工作不正常

Vba 范围(单元格(…工作不正常,vba,excel,range,Vba,Excel,Range,我对excel中使用的VBA范围有一点问题: dim frameRefPoint As String frameRefPoint = "4,4" range(Cells(frameRefPoint).Offset(0,0), Cells(frameRefPoint).Offset(7, 7)).Interior ... 这与我预期的不一样。我认为指定的范围(单元格(4,4).Offset(0,0))中的第一个单元格应该是“D4”,但当我在代码中使用该范围时,该范围的第一个单元格是“D1”~单

我对excel中使用的VBA范围有一点问题:

dim frameRefPoint As String

frameRefPoint = "4,4"
range(Cells(frameRefPoint).Offset(0,0), Cells(frameRefPoint).Offset(7, 7)).Interior ...
这与我预期的不一样。我认为指定的
范围(单元格(4,4).Offset(0,0))
中的第一个单元格应该是“D4”,但当我在代码中使用该范围时,该范围的第一个单元格是“D1”~单元格(1,4)


单元格的address属性(frameRefPoint)返回$D$1。这里缺少什么?

您不能通过使用临时逗号连接值来跨越两个参数(例如,
.cells(,)
)。只需使其看起来与您的代码不同于合法代码。但是,您可以为每个参数使用变量

Range(Cells(CInt(Split(frameRefPoint, ",")(0)), CInt(Split(frameRefPoint, ",")(1))).Offset(0, 0), Cells(CInt(Split(frameRefPoint, ",")(0)), CInt(Split(frameRefPoint, ",")(1))).Offset(7, 7)).Interior....
dim r as long, c as long, frameRefPoint As string
r = 4
c = 4
cells(r, c).resize(7, 7) = "this works"

frameRefPoint = "4,4"
'split the string on the comma and convert teh text-that-looks-numbers to actual numbers
cells(int(split(frameRefPoint, ",")(0))), int(split(frameRefPoint, ",")(1)).resize(7, 7) = "this also works"

“4,4”
是一个字符串,而不是VBA参数列表。您必须使用
frameRefPoint=“4,4”
吗?您不能只使用
frameRefPoint=“D4”
?@ShaiRado我需要递增(向一个方向移动)-一个表示单元格地址的变量,例如,我有cellAddress=“C4”我需要向下移动3行。使用单元格(4,4)更容易。使用
。调整大小(7,7)
将初始单元格扩展到7行7列。使用
。偏移(0,0)
。偏移(7,7)
扩展区域看起来像是乱七八糟的代码。我现在理解了这个问题,谢谢。我会检查.resize的行为,我从来不知道它的存在。实际上,
。resize(8,8)
将与
。offset(0,0)
。offset(7,7)
相同。