Страницы: 1
RSS
[ Закрыто ] Нужно внести пояснения к макросу, Необходимо понять что макрос делает в каждой строке кода
 
Здравствуйте! Помогите понять что именно делает макрос в каждой строке кода. Макрос это для сортировки порядка листов. Но я хочу разобраться какие операции он для этого выполняет
Текс макроса:
Код
Sub SortSheets()
Dim iSh As Worksheet
Dim arr(), arrSort(), I&
ReDim arr(Worksheets.Count - 1)
On Error Resume Next
For Each iSh In Worksheets
    arr(I) = CDbl(iSh.Name)
    I = I + 1
Next
arrSort = ShellSort(arr)
Application.ScreenUpdating = False
For I = 0 To UBound(arrSort)
    Worksheets(CStr(arrSort(I))).Move Before:=Sheets(I + 1)
Next
Worksheets(1).Activate
Application.ScreenUpdating = True
End Sub

Function ShellSort(x) '*** для 1-мерного массива
Dim Limit As Long, Switch As Long, I As Long, j As Long
Dim tmp
j = (UBound(x) - LBound(x) + 1) \ 2
Do While j > 0
 Limit = UBound(x) - j
 Do
 Switch = LBound(x) - 1
 For I = LBound(x) To Limit
 If x(I) > x(I + j) Then 'по возрастанию
' If x(i) < x(i + j) Then 'по убыванию
 tmp = x(I): x(I) = x(I + j)
 x(I + j) = tmp: Switch = I
 End If
 Next
 Limit = Switch - j
 Loop While Switch >= LBound(x)
 j = j \ 2
Loop
ShellSort = x
End Function
 
Kentavrik7, не - ну вы точно решили раздраконить модераторов)))
Название темы - о чём??? В вашем случае, вопрос о комментировании макроса нужно было задать в той теме, в которой этот макрос вам дали или же создать новую с названием типа «Сортировка листов книги макросом» — и уже в ней уже просить о комментировании макроса.
Изменено: Jack Famous - 04.04.2018 14:15:43
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, Хороший совет спасибо большое за помощь! И за набивание постов. Если вы не заметили "ту" тему закрыли. А назвал эту так чтобы была ясность того что меня интересует.  
 
Kentavrik7, М.б. стоит мат. часть почитать про массивы и переменные, и после этого вопросов будет гораздо меньше в том числе и по данной процедуре.
А так расписать каждую строку можно, но в чем смысл этого действия, что бы вы поняли малую часть?
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Kentavrik7 написал:
Если вы не заметили
не заметил, т.к. не следил. Да и, к тому же я 2 варианта предложил, а не 1…
Цитата
Kentavrik7 написал:
назвал эту так чтобы была ясность
тогда вы промахнулись и, если не предложите новое название для модераторов, то велик риск, что и эту закроют.
Также посоветую дать в шапке ссылку на закрытую тему, так сказать, для понимания всей "истории"  ;)
Изменено: Jack Famous - 04.04.2018 14:33:48
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, Прошу вас) Отвалите от меня пожалуйста. Ну не нужны мне ваши советы, вы отнимаете и мое и свое время. Мне нужно решение поставленных мной вопросов.
 
Nordheim, Хотя бы суть уловить малую) Что макрос делает в самом себе. Например сравнивает значение в названии следующего листа, и если оно больше его самого ставит лист позади. Вот это интересно
 
Цитата
Kentavrik7 написал:
Мне нужно решение поставленных мной вопросов.
С такой постановкой вопроса добро пожаловать Сюда
"Все гениальное просто, а все простое гениально!!!"
 
Kentavrik7,
Цитата
Kentavrik7 написал:
Отвалите от меня пожалуйста
Вам люди пытаются, что то донести и объяснить, а Вы не красиво ведете себя.
Не хотите что бы надоедали - идите в  раздел "РаботА" и все решено.
Не бойтесь совершенства. Вам его не достичь.
 
Kentavrik7, Вы считаете, что это вежливо - "отвалите"? Пункт 3.4 правил тут напрашивается. Хотите ещё отдохнуть? Я бы на Вашем месте извинился.
 
Вот как чувствовал, что гражданин особенный попался  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
3 человека налетели на одного) Jack Famous, Извините ваше величество, не буду больше!
Спросить хотел просто, развели демагогию, и еще поддержки ищите. Вот сколько слов тратите, а помощи 0. Если бы мне нужна была "работа" я бы зашел в раздел "работа". А мне нужно найти ответ на вопрос, поэтому я зашел в раздел "вопросы".
Изменено: Kentavrik7 - 04.04.2018 15:42:20
 
Юрий М, А как правильно по вашему поступать? Если данный человек в каждой моей теме говорит мне как и что делать. Хотя он такой же рядовой пользователь как и я. И ничего я плохого не вижу в своей теме. Как ничего плохого не вижу и в вопросе, и в том что я захотел в нем разобраться. Неужели всех кто хочет что-то понять, или хочет что-то узнать, обязательно нужно сначала критиковать, дрессировать, и ни в коем случае не помогать. Это вздор.
 
Макрос мой. В теме был озвучен алгоритм его работы. ТС обратился откомментировать код ко мне л/с. Я отказал (ну не люблю я это дело, разве что за отдельную плату). Рекомендовал ТСу подучить матчасть (про массивы в частности) и посмотреть в Курилке темы по литературе про VBA.
Kentavrik7,  я думаю, что комментарии к коду мало чем Вам помогут. В таких вещах теория все таки первичнее практики.
Согласие есть продукт при полном непротивлении сторон
 
Sanja, Понял, спасибо большое!
Страницы: 1
Наверх