Вставка строки в формулу в VBA - PullRequest
0 голосов
/ 27 июня 2019

Я создаю фрагмент кода VBa, который вставит конкретную формулу в мою таблицу.Поскольку файл находится в общедоступном выпадающем списке, я хочу создать путь к файлу со строкой thisworkbook.path.Хотя я не могу использовать эту строку в своей формуле.

Формула, которую нужно вставить, - это формула SUMIF, которая берет данные с другого листа в моей книге, хотя она продолжает запрашивать каталог файлов, когда я пытаюсьвставить формулу

Sub Monthly_OTB_update()
'
Dim I As Long
Dim J As Integer
Dim H As Integer
Dim A As String
Dim B As String
Dim C As String
Dim D As String
Dim E As String


A = ThisWorkbook.Path
B = "2019"
C = "Monthly OTB 2019"
D = A & B
E = A & C



Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.DisplayStatusBar = False

    'Go to Last used date and select the next cell
    Sheets("Monthly OTB 2019").Select
    Range("E2").Select
    Selection.End(xlToRight).Select
    ActiveCell.Offset(0, 1).Select

    For I = 1 To 12

    'Fill selection with date and move 1 down
    ActiveCell.FormulaR1C1 = "=TODAY()"
    ActiveCell.Offset(1, 0).Select

        'insert formula to retrieve data
        ActiveCell.FormulaR1C1 = _
           "=SUMIFS("" & D & ""!R4C5:R100000C5,OTB!R4C2:R100000C5,"" & E         & ""!RC1)"

Я не включил полный код, так как остальное - просто повторение того, что происходит в коде, который здесь.и конец цикла & Sub.

Выскакивающая ошибка - это ошибка приложения или объекта.

Ответы [ 2 ]

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

Я бы проверил следующие строки:

Может быть, D = A & "\" & B и E = A & "\" & C помогут. (Application.Pathseparator является правильным выбором вместо "\", но это не большая проблема.)

Возможно ...""!R1C1)" ... вместо ...""!RC1)"

Может быть, после SUMIFS слишком много кавычек. Рассматривайте эту операцию как простую строковую операцию для склеивания деталей. Результатом должна быть синтетически правильная команда. Я проверил бы это без ведущего знака равенства и проверил бы, правильно ли это.

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

Когда вы присоединяетесь к пути к папке с именем книги или любым другим путем внутри этой папки - вам нужно использовать Application.PathSeparator в качестве промежуточной строки между ними. Я советую вам использовать MsgBox(D) перед назначением формул для ячеек, чтобы вы могли проверить правильность пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...