Как передать параметр типа Range в function?

Автор Посетитель 05.02.2025, 05 февраля 2025, 18:18

Посетитель 05.02.2025

Написал функцию, которую хочу поместить в ячейку Excelя.

Public Function AauseByRef(ByVal r1 As Range, ByRef r2 As Range) As Long
   
    MsgBox r1.row, vbOK, "My Info"
    r2.Cells(r2.row, r2.Column).Value = r1.Cells(r1.row, r1.Column).Value / 2#
   
    AauseByRef = r1.row
    Exit Function
end function

Собственно, что именно делается в функции в данном случае неважно.
Вопрос: Как правильно передать в эту функцию произвольно выбранный мышкой на листе Range?
byRef?
byVal?

Public Function AauseByRef(ByRef r1 As Range,

Функцию задействую через строку ввода формул в ячейку (fx).
Появляется диалоговое окно, приглашающее ввести значения параметров, щёлкаю по маленькой иконке справа от строки ввода параметров и выбираю мышкой диапазон на листе. Аналогично со вторым параметром. Но ничего не работает.
Такое впечатление, что тип параметров указан неправильно. Но в строке формул выглядит вполне изящно: AauseByRef(C4:C33, F5:F14).
Однако, MsgBox в функции показывает чушь, причём, несколько раз показывается.

Как решить проблему?

Администратор

Здесь:
r2.Cells(r2.row, r2.Column).Value = r1.Cells(r1.row, r1.Column).Value / 2#

зачем вы используете символ # после 2?

Администратор

Создайте функцию, чтобы я мог у себя запустить и понять, почему не работает.
Т.е. не просто что-то запишите в функцию, а чтобы функция делала какое-нибудь действие.