VBA Runtime error '1004' ~ Sum if Function с переменным именем листа в функции - PullRequest
0 голосов
/ 23 мая 2019

При кодировании определенного диапазона ячеек (столбца) с помощью функции sumif в VBA я получаю ошибку, определенную объектом или приложением.Функция sumif ссылается на другой лист, который является одинаковым для всех 4 переменных листов в рабочей книге и возвращается на 4 разных листа

Исходным листом является лист Machines, как показано в коде.

Есть ли кто-нибудь, кто может помочь мне с этой ошибкой?

Когда я пишу код без имен переменных имен, я не получаю ошибку, я думаю, что мой синтаксис в правильном порядке, и переменная возвращаетзначение (L2 для первого i)

Код выглядит следующим образом:

Sub machine_stops_invoeren()
    Dim naam4 As String

    For i = 1 To 4        
        naam4 = Sheets("Settings").Range("B2").Offset(i, 0).Value        
        Sheets(naam4).Select
        Range("AH1").Formula = naam4        
        Range("AG2").FormulaR1C1 = _
            "=SUMIFS(Machines!C[-13],Machines!C[-15],"">""&'" & naam4 & "' !RC[-8],Machines!C[-14],""<""& '" & naam4 & "'!RC[-7], Machines!C[-27], ""<>OK"", Machines!C[-23], '" & naam4 & "' !R1C34)*86400"

        Range("AG2", "AG" & Cells(Rows.Count, 1).End(xlUp).Row).FillDown
        Range("AG1").Formula = "losse mach stops gedurende run"
    Next i
End Sub

Я должен получить возврат количества секунд в течение определенного периода времени на определенной производственной линии(L2. L3, L5 или L6) (следовательно, операторы больше и меньше, чем)

1 Ответ

1 голос
/ 24 мая 2019

На самом деле я не понимаю смысл этого кода, потому что вы циклически изменяете от 1 до 4, но вы пишете формулу всегда в одном и том же месте. Таким образом, формула ранее написанной формулы перезаписывается следующей, и только последний цикл останется на листе.

В этом нет никакого смысла.


Проблема в том, что в вашей формуле есть ошибки.

Как это можно отладить?

Распечатайте формулу в окне, чтобы вы могли проверить ее.

Debug.Print "=SUMIFS(Machines!C[-13],Machines!C[-15],"">""&'" & naam4 & "' !RC[-8],Machines!C[-14],""<""& '" & naam4 & "'!RC[-7], Machines!C[-27], ""<>OK"", Machines!C[-23], '" & naam4 & "' !R1C34)*86400"

Например, если naam4 равно L1, результат будет следующим:

=SUMIFS(Machines!C[-13],Machines!C[-15],">"&'L1' !RC[-8],Machines!C[-14],"<"& 'L1'!RC[-7], Machines!C[-27], "<>OK", Machines!C[-23], 'L1' !R1C34)*86400

и вы увидите, что есть 2 дополнительных пробела, которые не разрешены в этих местах. Я отметил их ниже:

=SUMIFS(Machines!C[-13],Machines!C[-15],">"&'L1' !RC[-8],Machines!C[-14],"<"& 'L1'!RC[-7], Machines!C[-27], "<>OK", Machines!C[-23], 'L1' !R1C34)*86400
'                                               ^                                                                                        ^
'                                               |                                                                                        |
'                                               | remove this space                                                                      | remove this space

Удалите эти пробелы из кода VBA.

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