您可以为Excel VBA中的特定工作表分配一个“variables名称”

好吧,我已经读过这个:

你可以给Excel中的列variables名称?

从我的理解来看,我基本上可以把“名字”等同于A,这样当我这样做的时候:

For i = 1 to 100 worksheets(Sheet1).Range(Name & i).Value = "poop" next i 

它将填满单元格A1:A100。

但是,如果我input:

 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栏,而在Sheet2中有满栏的F栏。 也许我太挑剔,因为我知道我可以键入“Sheet1.Name”和“Sheet2.Name”,因为他们是该对象,但我试图避免,因为我已经指定它在工作表( ),这将使代码更清洁。

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

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

 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 

码:

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

然后:

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

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