下面的代码创建一个新列(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
答案 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