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

时间:2013-10-02 16:09:09

标签: excel vba excel-vba excel-2007

下面的代码创建一个新列(A),给它标题“Class”,然后用工作表名称填充A列,直到工作簿中所有工作表的B的最后一行。它正在工作,除了它将所有工作表填充到从所有后续工作表处理的第一张纸的B的最后一行。我做错了什么?我喜欢填充由每张纸的最后一行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

2 个答案:

答案 0 :(得分:2)

使用

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

答案 1 :(得分:2)

这适合我。

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