Excel 2007macros将填充到工作簿中所有工作表的第一个工作表的末尾

下面的代码创build一个新的列(A),给它头“Class”,然后用工作表名称填充列A,直到工作簿中所有工作表的B的最后一行。 它正在工作,只是它将所有工作表填充到为所有后续工作表处理的第一张工作表中的最后一行。 我做错了什么? 我喜欢根据每张纸的最后一行确定填充量。

Option Explicit Sub AddColumnFill() Dim sht As Worksheet For Each sht In ActiveWorkbook.Worksheets sht.Range("A1").EntireColumn.Insert xlShiftToRight sht.Cells(1, 1) = "Class" sht.Range("A2:A" & Cells(Rows.Count, "B").End(xlUp).Row).Value = sht.Name Next sht End Sub 

这对我有用。

 Option Explicit Sub AddColumnFill() Dim sht As Worksheet Dim lRow As Long For Each sht In ActiveWorkbook.Worksheets With sht lRow = .Range("A" & .Rows.Count).End(xlUp).Row .Columns("A:A").Insert Shift:=xlToRight .Cells(1, 1) = "Class" .Range("A2:A" & lRow).Value = .Name End With Next sht End Sub 

使用

sht.Range("A2:A" & sht.Cells(sht.Rows.Count, "B").End(xlUp).Row).Value = sht.Name

代替

sht.Range("A2:A" & Cells(Rows.Count, "B").End(xlUp).Row).Value = sht.Name