乔纳森(Jonathan)正在创建一个宏,需要用值填充一系列单元格。例如,如果他需要填充范围A1:C1,则当前需要三个语句来填充该范围:

Range("A1") = "Test1"

Range("B1") = "Test2"

Range("C1") = "Test3"

他想知道是否有一种方法可以将它们填充到单个语句中,类似于以下内容:

Range("A1:C1") = ("Test1","Test2","Test3")

乔纳森(Jonathan)期望的语法很接近,但无法使用。运作方式如下:

Range("A1:C1") = Array("Test1","Test2","Test3")

请注意Array语句的使用,该语句告诉VBA,后面的内容应被视为要在运算符左侧的单元格序列中使用的值序列。有趣的是,您可以将值填充到变量中,也可以使用Array语句,如下所示:

sOne = "Apples"

sTwo = "Oranges"

sThree = "Artichokes"

Range("A1:C1") = Array(sOne, sTwo, sThree)

如果愿意,也可以使用直接变量:

Dim sMyStrings(2) As String sMyStrings(0) = "Apples"

sMyStrings(1) = "Oranges"

sMyStrings(2) = "Artichokes"

Range("A1:C1") = sMyStrings

上面的代码也可以如下重写:

Dim sMyStrings(2) As String sMyStrings = Array("Apples", "Oranges", "Artichokes")

Range("A1:C1") = sMyStrings

最后,如果要将值放在单列而不是行中,则需要以这种方式使用Transpose函数:

Range("A1:A3") = Application.Transpose(Array("Test1","Test2","Test3"))

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(11702)适用于Microsoft Excel 2007、2010、2013和2016。您可以在此处为Excel的较旧菜单界面找到此技巧的版本:

链接:/ excel-Filling_a_Range_of_Cells_with_Values [使用值填充单元格范围]。