Пользовательская функция - диапазон как аргумент - VBA
Формулировка задачи:
Привет.
Собственно - пользовательская функция. Ее задача - сложить значения каждой i+3 (1-я, 4-я, 7-я и т.д.) ячейки в диапазоне, переданном в качестве аргумента, и получить в результате сумму. Делаю так:
Проблема возникает с тем, что при проверке условия Row отсчитывается не в переданном диапазоне, а с листа. Т.е. начальное значение должно быть i=1, а оно равно 100 (100-я строка на листе).
Вопрос - как сделать проверку именно в диапазоне?
Листинг программы
- Function Itogo(ByRef myRange As Range)
- Dim data As Double
- Dim i As Long
- Dim myCell As Range
- Dim val As Double
- data = 0
- i = 1
- For Each myCell In myRange
- If myCell.Row = i Then'Здесь Row берется не из диапазона, а с листа
- val = myCell(i, 1)'Чтобы самому видеть значение
- data = data + val
- End If
- i = i + 2
- Next myCell
- Itogo = data
- End Function
Решение задачи: «Пользовательская функция - диапазон как аргумент»
textual
Листинг программы
- Function Itog#(myRange As Range)
- Dim z, i&: z = myRange.Value
- For i = 1 To UBound(z)
- If i Mod 2 = 1 Then
- Itog = Itog + z(i, 1)
- End If
- Next
- End Function
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д