2013-10-02 5 views
0

Код ниже создает новый столбец (A), дает ему заголовок «Класс», а затем заполняет столбец A именем листа до последней строки B для всех листов в рабочей книге. Он работает, за исключением того, что заполняет все листы до последней строки B из первого листа, обработанного для всех последующих листов. Что я сделал не так? Мне нравится заполнение, которое должно быть определено последней строкой B для каждого листа.Макрос Excel 2007 заполняет до конца первого листа для всех листов в рабочей книге

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

Это работает для меня.

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 
+0

Намного легче понять, чем предыдущий код. –

+0

@AaronThomas: Спасибо :) –

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

+1 Это передо мной! –

Смежные вопросы