你能给列一个变量名称"对于Excel VBA中的特定工作表

时间:2014-10-01 15:00:59

标签: excel vba excel-vba

好的,我读过这个:

Can you give columns in Excel a variable name?

根据我的理解,我基本上可以设置" Name"等于A,这样当我这样做时:

For i = 1 to 100

worksheets(Sheet1).Range(Name & i).Value = "poop"

next i

它将用大便填充单元格A1:A100。

但是,如果我输入:

worksheets(Sheet2).Range(Name & i).Value = "poop"

它也会填充A1:A100,现在除了表2之外。

有什么方法可以"姓名"是否特定于工作表?类似的东西:

Sheet1.Name = "A"
Sheet1.Name = "F"
For i = 1 to 100

worksheets(Sheet1).Range(Name & i).Value = "poop"
worksheets(Sheet2).Range(Name & i).Value = "poop"

会导致sheet1的列A充满大便,而表2的列F充满了大便。也许我太挑剔了,因为我知道我可以输入" Sheet1.Name"和" Sheet2.Name"因为他们是该对象,但我试图避免这种情况,因为我已经在Worksheets()中指定了它,它会使代码更清晰。

我在想我必须把它放到每个工作表的模块中,也许作为私人模块,因为他们都被称为"姓名",但我真的不喜欢'知道......

2 个答案:

答案 0 :(得分:1)

代码:

Worksheets(Sheet1).Range("A:A").Name = "PoopRange"

然后:

Range("PoopRange")将始终引用Sheet1,A列。

您可以使用Range("PoopRange").Cells(i,1)遍历该列中的每个单元格。

答案 1 :(得分:0)

您想要创建一个新的范围对象,然后设置该范围对象。范围可以是一组单元格,也可以是列或行:

Dim rngCol as Range
Dim rngGroup as Range

Set rngCol = Worksheets("Sheet1").Range("A:A")
Set rngGroup = Worksheets("Sheet1").Range("A1:F100")

rngCol.Value = "Poop"
rngGroup.Value = "Poop"

或者你可以在设置之后迭代这些:

For each rngCell in rngCol
     rngCell.Value = "Poop"
Next rngCell