powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как работает этот макрос?
13 сообщений из 13, страница 1 из 1
Как работает этот макрос?
    #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
Как работает этот макрос?
    #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
Как работает этот макрос?
    #36904837
Cursky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursky,

Можете тыкнуть в текст макроса мышкой и нажать F8. Тогда он будет выполняться пошагово, а вы будете видеть, как он работает.
...
Рейтинг: 0 / 0
Как работает этот макрос?
    #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
Как работает этот макрос?
    #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
Как работает этот макрос?
    #36904889
Shpr0TinG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА, спасибо.

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

А как работает UBound, что это такое вообще?
...
Рейтинг: 0 / 0
Как работает этот макрос?
    #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
Как работает этот макрос?
    #36904963
Shpr0TinG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cursky, спасибо.
...
Рейтинг: 0 / 0
Как работает этот макрос?
    #36904969
Shpr0TinG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как работает temp: temp = [A2]: Application.ScreenUpdating = False
что такое "temp"?
...
Рейтинг: 0 / 0
Как работает этот макрос?
    #36905047
Shpr0TinG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оператор temp - как он функционирует?
...
Рейтинг: 0 / 0
Как работает этот макрос?
    #36905102
Cursky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shpr0TinG,

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

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


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