Excel 如何创建动态范围变量

Excel 如何创建动态范围变量,excel,vba,Excel,Vba,我试图写入列中某个范围内的单元格 Range("B7:B(noOfTests)") = "Not Tested" 我错过了什么?是否有更好的实践来实现其目标?您需要: Range("B7:B" & noOfTests) = "Not Tested" 这是另一个 Range("B7").resize(noOfTests, 1) = "Not Tested" 要详细说明@Rory的答案,或者您的代码不起作用的原因: 双引号“在VBA(以及几乎任何其他编程语言)中表示字符串文字 范围对

我试图写入列中某个范围内的单元格

Range("B7:B(noOfTests)") = "Not Tested"
我错过了什么?是否有更好的实践来实现其目标?

您需要:

Range("B7:B" & noOfTests) = "Not Tested"
这是另一个

Range("B7").resize(noOfTests, 1) = "Not Tested"

要详细说明@Rory的答案,或者您的代码不起作用的原因:


双引号“在VBA(以及几乎任何其他编程语言)中表示字符串文字

范围
对象的工作方式是指定1个或2个单元格。其中,单元格1是起始单元格(如果未指定,则为结束单元格),单元格2是结束单元格,定义所选范围

将参数传递给一个范围有多种方法,但最常见的是使用上述字符串文字。例如
range(“B7:B12”)
<注意括号内的引号

不过,您要做的是在字符串文本中取消对变量值的引用。这是在VBA中通过符号和表达式实现的。

这就是您试图做的(如果解释可以读取伪代码)

很明显,interpeter是混乱的。BnoOfTests不是一种常见的单元格引用格式,它不知道如何使用它。您需要做的是将变量解引用到一个值中,正如我上面所暗示的,因此正确的解决方案是:

Range("B7:B" & noOfTests) = "Not Tested"

避免字符串引用混淆的另一个好做法是引用定义范围的两个单元格。就像我上面所描述的:

范围对象的工作方式是指定1,也可以指定2 单元格。其中单元格1是起始单元格(如果不是,则为结束单元格) 指定),单元格2是结束单元格,定义所选范围

因此,为了确保不把事情搞砸,可以使用以下定义:

Range(Cells(7, "B"), Cells(noOfTests, "B")) = "Not Tested"
以我的拙见,这实际上是更清晰的抄写,而且更不容易出错!

Range("B7:B" & noOfTests) = "Not Tested"
Range(Cells(7, "B"), Cells(noOfTests, "B")) = "Not Tested"