2014-11-08 4 views
0

Мне нужно подготовить короткий макрос. Я несколько рабочих листов в книге, и я написал макрос для импорта диапазона из другой книги, но я хочу, чтобы мой макрос перебирал все листы. Я много читал об этом, но все же думаю, что мне не хватает базовых знаний на . Может ли кто-нибудь помочь мне поставить этот макрос в цикле?Запуск моего макроса на всех листах

Sub AddHeader() 
    current = ActiveWorkbook.Name 
    Range("A1:C96").Select 
    Selection.Cut Destination:=Range("A55:C150") 
    Windows("MIP_Ordering_Header.xlsx").Activate 
    Range("A1:H54").Select 
    Selection.Copy 
    Windows(current).Activate 
    Range("A1").Select 
    Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _ 
    SkipBlanks:=False, Transpose:=False 
    ActiveSheet.Paste 
    Cells(53, 1).Value2 = "Plate Name:" & ActiveSheet.Name 
End Sub 
+0

Эта ссылка объясняет, как чтобы просмотреть все рабочие листы в книге: http://support.microsoft.com/kb/142126 – Kevin

+0

Спасибо, я попробовал это, но, похоже, этого недостаточно, просто просто заключите мой код в этот цикл. Нужно ли менять переменные? – Benedikt

+0

Надеюсь, что ниже помогает – Kevin

ответ

-1

Я бы сделал что-то похожее на нижеследующее. Скопируйте диапазон первого, а затем петлю через листов в активной книге:

Sub AddHeader()

Dim WS_Count As Integer 
Dim I As Integer 

'first get the data to copy 
Windows("MIP_Ordering_Header.xlsx").Activate 
Range("A1:H54").Select 
Selection.Copy 
ActiveWorkbook.Close 

'get all the active sheets 
WS_Count = ActiveWorkbook.Worksheets.Count 

' Begin the loop. 
For I = 1 To WS_Count 
    'refer to the curent workbook using the "I" variable 
    ActiveWorkbook.Worksheets(I).Range("A1").Select 
    'the rest of your code... 
Next End Sub 

Edit: Как копировать вставить с переменными:

Sub CopyPaste() 

Dim src1 As Variant 
Dim src2 As Variant 

src1 = Sheets(1).Range("A1:A2").Value 
src2 = Sheets(1).Range("A4:A5").Value 

Sheets(1).Range("B1:B2").Value = src1 
Sheets(1).Range("B4:B5").Value = src2 End Sub 
+0

Спасибо, это работает, но только если я также поместил часть «copy» в цикл. Потому что в противном случае выбор будет перезаписан. Могу ли я иметь два «выбора» за раз? – Benedikt

+0

У вас не может быть два выбора за один раз, но см. Мое редактирование, чтобы узнать, как назначить диапазоны варианту. Примером является, в основном, копия. – Kevin

+0

Спасибо, отлично! – Benedikt

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