First.Cells(i,1)如何运作?

我试图修改一个我最初在这里find的命令。 http://www.extendoffice.com/documents/excel/790-excel-insert-sheet-names-in-cells.html最初,该命令被附加到一个ActiveX控件button。 它做了一个新的表。 然后将工作簿中的工作表的所有名称放在第一列中,每个名称为新行。

该代码是:

Private Sub CommandButton1_Click() Set NewSheet = Sheets.Add(Type:=xlWorksheet) For i = 1 To Sheets.Count NewSheet.Cells(i, 1).Value = Sheets(i).Name Next i End Sub 

我修改了它,停止创build一个新的工作表,只需将button所在工作表的A2开始列表。

 Private Sub CommandButton3_Click() Range("A2").Select Dim First As Worksheet Set First = Workbooks.Item(1).Sheets.Item(1) For i = 1 To Sheets.Count First.Cells(i, 1).Value = Sheets(i).Name Next i End Sub 

现在,在每个非汇总表中,我都有行中的数据。 在A列中,我在每行的下一行放置了一个数据。 所以,单元格A1将这些数据相加,并告诉我有多less行数据。 目前,他们的范围从1到5。

我想检查A1单元格,如果该值大于1,请粘贴摘要选项卡上的表格名称,等于数据选项卡中的数据行数。

我试图改变For i = 1,为了i = x,并将x定义为A1单元格,但是我在VBA上非常新,这使我不得不面对问题。 我真的很想知道,这条线是如何工作的?

 First.Cells(i,1).Value=Sheets(i).Name 

我找不到First.Cells网站上任何地方的参考。 我想这会让我更好地了解如何进行所需的更改。

感谢您的帮助!

在代码中, First是使用以下行设置的工作表对象:

 Set First = Workbooks.Item(1).Sheets.Item(1) 

此代码将variablesFirst设置为Excel中第一个工作簿中的第一个工作表。

工作表设置后, First.Cells(i,1)引用工作表和i行第1列(A列)处的单元格。 .Value属性被设置为Sheets(i)Sheets(i)名称。

换句话说,该行将行i,列A的单元格值设置为处于位置i的工作表的名称。 因此,如果您使用默认值(即Sheet1Sheet2Sheet3工作表名称)创build一个新的工作簿,则代码将设置First to Sheet1 ,然后在Sheet1上的列A上的该工作簿中打印所有工作表的名称。

如果您需要在每个工作表中检查A1中的值,则可以使用Sheets(i).Range("A1").Value来访问单元格或区域的值。该值将返回单元格A1中的值在位置i的工作表。

你可以testing像这样的值:

 'Ignore the summary sheet If Sheets(i).Name <> "Summary" Then If Sheets(i).Range("A1").Value > 1 Then 'Set the sheet name and record count Sheets("Summary").Cells(i, 1).Value = Sheets(i).Name Sheets("Summary").Calles(i, 2).Value = Sheets(i).Range("A1").Value End If 

假设您的汇总表名称为Summary此代码将在其上传递,然后将分别在列A和B的Summary表中的列i放置表名称和行数。 我应该注意的是,如果一张纸的值不是> 1,那么它将跳过你的汇总表中的一行。 有办法解决这个问题。 现在我将从上面开始,如果您有任何问题,我可以澄清。 我将这个代码立即放在First.Cells(i, 1).Value = Sheets(i).Name行之后。

语句Dim First As WorksheetFirst定义为WorkSheetvariables。

语句Set First = Workbooks.Item(1).Sheets.Item(1)将variablesFirst指定为Excel打开的工作簿列表中的第一个工作簿中的第一个工作表。

请注意, First这个名字是巧合的,并且与它指向该工作簿中第一个工作簿打开或第一个工作表的事实无关。 variables名称可能很容易就是Foo ,它仍然会指向那里。

指向第一个工作簿的事实由Workbooks.Item(1)1.Sheets.Item(1)的第一个工作表.Sheets.Item(1) 。 你已经硬编码了,所以这就是它所指的。

您的问题:

 First.Cells(i,1).Value=Sheets(i).Name 

Sheet(i).Name并放入工作表First Cell(i,1)中。

有用的注意事项: ItemWorksheetworkbook对象的默认属性,所以你可以把你的语句写得更干净一点,就像这样:

 Set First = Workbooks(1).worksheets(1)