2014-02-07 6 views
0

У меня есть вопрос, и я новичок в VB. Пожалуйста, помогите мне!Сортировка рабочих листов в заданной пользователем книге

У меня есть рабочая книга с разными рабочими листами, и я хочу отсортировать их в соответствии с диапазоном порядка, который я даю в «Csheet». Это код ниже, и он работает нормально. Но я хотел реализовать это в другой книге. И это не сработает. Вы можете помочь мне с этим, пожалуйста !!!!

Dim SortOrder As Variant 
Dim Ndx As Long 
With Worksheets("CSheet").Range("A1:A3") 
    For Ndx = .Cells.Count To 1 Step -1 
     Worksheets(.Cells(Ndx).Value).Move before:=Worksheets(1) 
    Next Ndx 
End With 
End Sub 
+0

Изменить 'Worksheets (.Cells (Ndx) .Value) .move перед:. = Worksheets (1)' в 'Workbooks ("BlahBlah") Worksheets (.Cells (Ndx) .Value) .move перед тем : = Рабочие книги («BlahBlah»). Рабочие листы (1) ' –

ответ

1

Основываясь на моих комментариях, вот более устоявшийся способ сделать это. Я просто набрал его и, следовательно, не тестировался. Дайте мне знать, если вы столкнетесь с какой-либо ошибкой.

Причина, по которой ваш код не будет работать для другой книги, заключается в том, что вы не указали, в какой книге вы хотите, чтобы листы сортировались. Вы должны полностью квалифицировать свои объекты.

Sub Sample() 
    Dim thisWb As Workbook, thatWb As Workbook 
    Dim ws As Worksheet 
    Dim i As Long 

    Set thisWb = ThisWorkbook 
    Set ws = thisWb.Sheets("CSheet") 

    Set thatWb = Workbooks("BlahBlah") 

    For i = 3 To 1 Step -1 
     With ws 
      thatWb.Worksheets(.Cells(i, 1).Value).Move _ 
      before:=thatWb.Worksheets(1) 
     End With 
    Next i 
End Sub 
+0

Здравствуйте, Сидтарт, Большое вам спасибо за ответ. Я использовал тот же код, что и ваш. Но не помогло. Я новичок в VB. поэтому обучение шаг за шагом. Пожалуйста, со мной. Я создал книгу под названием «ThisWorkBook» и рабочий лист «Csheet» с именем рабочих листов от a1 до a3 (а именно a, c, b). и создал макрос в этом листе и вставил ваш код. Создал еще одну Рабочую книгу «Бла-Бла» с листами a, b, c. Я запускаю макрос из этого листа, открыв лист «thisworkbook» на обратной стороне. Запустите макрос, используя ALT + F * для листа «blahblah». Он говорит, что подстрока выходит за пределы диапазона. не могли бы вы помочь? – suki

+0

@suki Я добавил «.xls» на имя листа, чтобы исправить ошибку. Попробуйте: 'Set thatWb = Workbooks (« BlahBlah.xls »)' –

+0

Приветствие @portland, я все равно получаю ту же ошибку, – suki

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