Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как работает этот макрос? / 13 сообщений из 13, страница 1 из 1
18.10.2010, 12:09
    #36904734
Shpr0TinG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает этот макрос?
Доброго времени суток гуру экселя.
Подскажите пожалуйста как работает макрос приведенный ниже, мне необходимо знать.
желательно объяснить непонятные моменты. С уважением Василий.

Sub тест()
Dim o As Object, rng - что делает? As Range, vArr(), j&, q# - что это такое, и в чем его задача? Set o = ThisWorkbook.Sheets(1)
With o.UsedRange: j = .Rows.Count + .Row - 1: End With
Set rng = o.Range("a2:g" & j): vArr = rng.Value - как работает вот это?

For j = UBound(vArr) To 6 Step -1
If Len(vArr(j, 1)) > 0 Then
o.Cells(j + 1, 8) = q + vArr(j, 7): q = 0
Else
q = q + vArr(j, 7) - что это и как это работает? End If
Next
End Sub
...
Рейтинг: 0 / 0
18.10.2010, 12:39
    #36904820
Cursky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает этот макрос?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Sub тест()
    Dim o As Object, rng  As Range '- что делает? - объектная переменная представляет собой диапазон ячеек
    Dim vArr()
    Dim j&, q#  '- что это такое, и в чем его задача? - то же самое, что Dim j as long, Dim q as Double
    'Integer - %
    'Long - &
    'Single - !
    'Double - #
    'Currency - @
    'String - $
    Set o = ThisWorkbook.Sheets( 1 )
    With o.UsedRange
        j = .Rows.Count + .Row -  1 
    End With
    Set rng = o.Range("a2:g" & j)
    vArr = rng.Value '- как работает вот это? - массив vArr заполняется значениями из диапазона rng
    For j = UBound(vArr) To  6  Step - 1 
        If Len(vArr(j,  1 )) >  0  Then
            o.Cells(j +  1 ,  8 ) = q + vArr(j,  7 ): q =  0 
        Else
            q = q + vArr(j,  7 ) '- что это и как это работает? - переменной q присваивается новое значение: прежнее значение q + элемент массива vArr
        End If
    Next
End Sub
...
Рейтинг: 0 / 0
18.10.2010, 12:44
    #36904837
Cursky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает этот макрос?
Cursky,

Можете тыкнуть в текст макроса мышкой и нажать F8. Тогда он будет выполняться пошагово, а вы будете видеть, как он работает.
...
Рейтинг: 0 / 0
18.10.2010, 12:51
    #36904864
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает этот макрос?
Shpr0TinG,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
В табл типа
стр1
стр2
стр3
стр4
стр5
наим1,,,,,,в столб=7 например сумма=5
-----                   11
-----                     6
наим2                 сумма=10
----------------------11
---------------------12
           

идем от последней записи и накапливаем общую сумму
если у строки есть наименование то записываем (итог+столб 7) в столбец 8 и зануляем итог
и так до строки 6

сложности из-за использования массива varr,индексы которого от 0 до 9 при строках от 1 до 10

если макрос написать относительно строк,то он будет легче в понимании
...
Рейтинг: 0 / 0
18.10.2010, 13:00
    #36904883
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает этот макрос?
Shpr0TinG,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Sub тест2()
Dim o As Object, j&, q#, J1
Set o = ThisWorkbook.Sheets( 3 )
With o.UsedRange
 j = .Rows.Count + .Row -  1 
End With
Debug.Print j
'y=начало первой группы данных
Do While j >=  6 
If Len(o.Cells(j,  1 )) >  0  Then
o.Cells(j,  12 ) = q + o.Cells(j,  7 )
q =  0 
Else
q = q + o.Cells(j,  7 )
'- что это и как это работает?
End If
j = j -  1 
Loop
End Sub
...
Рейтинг: 0 / 0
18.10.2010, 13:02
    #36904889
Shpr0TinG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает этот макрос?
ПЕНСИОНЕРКА, спасибо.

СПАСИБО ВСЕМ ЗА ПОЯСНЕНИЯ.
Более мение стало понятно.

А как работает UBound, что это такое вообще?
...
Рейтинг: 0 / 0
18.10.2010, 13:17
    #36904937
Cursky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает этот макрос?
Shpr0TinG,

UBound - верхняя граница массива. Для вызова справки по этой функции выделите её мышкой и нажмите F1.

Справка Microsoft Visual BasicReturns a Long containing the largest available subscript for the indicated dimension of an array.

Syntax

UBound(arrayname[, dimension])

The UBound function syntax has these parts:

Part Description
arrayname Required. Name of the array variable; follows standard variable naming conventions.
dimension Optional; Variant (Long). Whole number indicating which dimension's upper bound is returned. Use 1 for the first dimension, 2 for the second, and so on. If dimension is omitted, 1 is assumed.



Remarks

The UBound function is used with the LBound function to determine the size of an array. Use the LBound function to find the lower limit of an array dimension.

UBound returns the following values for an array with these dimensions:

Dim A(1 To 100, 0 To 3, -3 To 4)

Statement Return Value
UBound(A, 1) 100
UBound(A, 2) 3
UBound(A, 3) 4
...
Рейтинг: 0 / 0
18.10.2010, 13:24
    #36904963
Shpr0TinG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает этот макрос?
Cursky, спасибо.
...
Рейтинг: 0 / 0
18.10.2010, 13:27
    #36904969
Shpr0TinG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает этот макрос?
А как работает temp: temp = [A2]: Application.ScreenUpdating = False
что такое "temp"?
...
Рейтинг: 0 / 0
18.10.2010, 13:52
    #36905047
Shpr0TinG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает этот макрос?
Оператор temp - как он функционирует?
...
Рейтинг: 0 / 0
18.10.2010, 14:08
    #36905102
Cursky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает этот макрос?
Shpr0TinG,

temp не оператор, это переменная, предназначенная, судя по названию, для хранения какого-то промежуточного значения.
...
Рейтинг: 0 / 0
18.10.2010, 14:23
    #36905158
Shpr0TinG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает этот макрос?
Cursky,
спасибо за информацию.
...
Рейтинг: 0 / 0
18.10.2010, 14:33
    #36905203
Cursky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает этот макрос?
Shpr0TinG,

Да не за что. Вам бы почитать литературу для начинающих.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как работает этот макрос? / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]