Как ссылаться на переменную объекта в формуле VBA? - PullRequest
0 голосов
/ 12 июня 2019

У меня есть саб, который получает пользовательский ввод для 2 дат, который действует как нижняя и верхняя граница диапазона, определенного как DateRange.Я хотел бы найти адрес ячейки для 2 дат, увеличить ссылку на ячейку на 1 строку и использовать ее для вычисления суммы всех соответствующих значений, которые попадают под найденные 2 даты.

У меня нет большого опыта работы с объектными переменными.Вот проблемы, которые у меня возникают:

  1. Увеличение L_Range и R_Range на 1 строку
  2. Использование L_Found и R_Found внутри формулы для суммы
Sub CustomIntervals()
    'User Input
    Dim L_Bound As Date
    Dim R_Bound As Date
    'Contains Found Cell Reference for L_Bound and R_Bound
    Dim L_Found As Range
    Dim R_Found As Range
    'Defining Range that will be Searched
    Dim DateRange As Range

    Set DateRange = Range("H8", Range("H8").End(xlToRight))

    L_Bound = InputBox("Enter Lower Bound Date (mm/dd/yyyy)", "Custom Date")
    R_Bound = InputBox("Enter Upper Bound Date (mm/dd/yyyy)", "Custom Date")

    Range("H8", Range("H8").End(xlToRight)).NumberFormat = "d-mmm"

    Set L_Found = DateRange.Find(L_Bound)
    Set R_Found = DateRange.Find(R_Bound)

    Set L_Found = L_Found.Offset(1, 0)
    Set R_Found = R_Found.Offset(1, 0)

    Range("E9").Formula = "=sum(" & L_Found.Address & ":" & R_Found.Address & ")"
    Range("E9").Select
    ActiveCell.AutoFill Destination:=Range("E9:E15")
End Sub

1 Ответ

0 голосов
/ 12 июня 2019

Вам нужна строка, которая выглядит как ссылка на диапазон ячеек. Это может быть сгенерировано с помощью свойства Address.

Вам также необходимо сместить диапазон, который генерирует этот адрес. Используйте функцию смещения перед извлечением адреса.

Range("E9").forumla = _
  "=sum(" & Range(L_Found, R_Found).Offset(1, 0).Address(0, 0) & ")"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...