Почему я получаю ошибку 424 при вызове функции? - PullRequest
0 голосов
/ 06 августа 2020

В VBA я написал подпрограмму для определения границы ячейки в Excel:

Sub Borderline(cell As Range)

With C.Borders(xlEdgeLeft)
       .LineStyle = xlContinuous
       .ColorIndex = 0
       .TintAndShade = 0
       .Weight = xlThin
End With

End Sub

Тем не менее, когда я вызываю ее, я получаю ошибку 424:

Sub Sub_1()

Dim C As Range

Set C = Range("e1")

Borderline C

End Sub

Почему?

1 Ответ

1 голос
/ 06 августа 2020

Длинная история:

Когда вы вызываете подпрограмму с помощью Borderline C, аргумент C «транслируется» в параметр cell. Новый саб Sub Borderline(cell As Range) не знает, что такое C, но неплохо понимает, что такое cell. Хотя они такие же. Поскольку он не знает, что такое C, когда здесь вызывается C - With C.Borders(xlEdgeLeft), возникает ошибка 424.

Краткая история:

At В начале вашего путешествия по VBA убедитесь, что вы вызываете и параметры, и аргументы одинаково. Таким образом, если вы вызываете функцию с Borderline C, убедитесь, что принятый параметр - Sub Borderline(C as Range), и у вас будет на одну проблему меньше, чем нужно.

Рабочий код:

Sub Borderline(c As Range)

    With c.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With

End Sub

Sub Sub1()

    Dim c As Range
    Set c = Range("E11")
    Borderline c

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