如何使用VBA将单元格值用作范围的一部分?

时间:2015-08-13 10:46:36

标签: excel vba excel-vba

如何使用单元格值填充VBA中的范围?

在这个例子中,我想复制一个选择并根据单元格L2的值将其粘贴到一行,行号与L2值相同。

我理解的最后一行代码不正确,但无法找出一个合适的解决方案,例如选择B100:K100。

Set Rng1 = Range("L2").Value
Range("B2:K2").Select
Selection.Copy
Range("B" & Range(Rng1) : "K" & Range(Rng1).Select

提前致谢

4 个答案:

答案 0 :(得分:3)

如果您想要L2细胞行,请按以下步骤使用:

Range("B" & Rng1.Row & ":K" & Rng1.Row).Select

如果您想要L2细胞的值,请使用以下内容:

Range("B" & Rng1 & ":K" & Rng1).Select

答案 1 :(得分:2)

这是DragonSamu的回复稍微清晰一点:

Dim IntRow As Integer
IntRow = Range("L2").Value
Range("B2:K2").Copy
Range("B" & IntRow & ":K" & IntRow).Paste

VBA最佳做法尽可能避免使用.select

答案 2 :(得分:1)

建立在DragonSamu&特雷斯博士回应:

Dim IntRow As Integer
IntRow = Range("L2").Value
Range("B2:K2").Copy Destination:=Cells(IntRow, 2)

单元格引用单个单元格,但会根据需要粘贴整个范围 只要您不使用特殊粘贴,就可以复制并粘贴一个命令。

答案 3 :(得分:0)

另一种选择是:

Dim IntRow As Integer
IntRow = Range("L2").Value
Range("B2:K2").Select
Selection.Copy
Range("B" & IntRow & ":K" & IntRow).Select

不是通过收集单元格的值来定义范围,然后将其作为选择的行号应用,而只需将IntRow定义为Integer,将行值存储在IntRow中,并在范围select中使用它。