2014-10-01 69 views
1

好了,我已阅读本:你能给列一个“变量名”为特定工作表在Excel VBA

Can you give columns in Excel a variable 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列满了便便,并且sheet 2的列F满了便便。也许我太挑剔了,因为我知道我可以键入“Sheet1.Name”和“Sheet2.Name”,因为它们是该对象的,但我试图避免这种情况,因为我已经在Worksheets中指定它( ),它会使代码更清洁。

我想我不得不把它放在每个表的模块,也许作为一个私人,因为它们都被称为“名”,但我真的不知道......

回答

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 
+0

出于某种原因,工作表(Sheet1)会导致错误13,但明确命名每个作品。谢谢! – Jongscx 2014-10-01 16:48:36

+0

对...很抱歉。我接受了答案后就修复了它。您可以执行Worksheets(“Sheet1”),也可以使用Sheet1.Range(“...”)引用实际工作表(假设名称与参考相同) – JNevill 2014-10-01 16:53:47

1

代码:

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

然后:

Range("PoopRange")总是引用Sheet1中,A列中

您可以通过该列中每个单元使用Range("PoopRange").Cells(i,1)循环。

+0

它在说下标越界...是一个名称工作表1中的有效对象?我以此为例,但实际上并没有创建它。 对不起,我对这一切都有些陌生,Excel中的VBS等。 – Jongscx 2014-10-01 15:32:23

+0

.Name是Worksheet对象的有效属性。实际上,只需使用(Name)属性调用工作表对象即可:“Sheet1.Range(...)”只需在编辑器中查看(Name)参数的工作表对象的属性即可。 – 2014-10-01 15:49:01

相关问题