Функция, которая должна быть нацелена на определенную c открытую книгу, похоже, вместо этого использует активную книгу - PullRequest
0 голосов
/ 28 мая 2020

Эта формула подсчета ячеек, которую я использую, похоже, нацелена на активный лист, а не на лист, который я явно указал для него. Может ли кто-нибудь помочь мне отладить это? Я относительно новичок в VBA. Я получал некоторые необъяснимые результаты от этой формулы, и после некоторого тестирования кажется, что какой бы лист у меня был активным, это то, для чего эта формула рассчитывает. Это не предполагаемый результат.

        Dim totalRows as double
        totalRows = Workbooks("Mastersheet").Worksheets("masterBudgetSheet").range("A8:A" & Cells(Rows.Count, "A").End(xlUp).Row).Rows.Count

Указание книги и рабочего листа не нацелено на эти два элемента?

** ОТВЕТ. ** Формула таргетинга, которую я использовал, имела неявный вызов активный лист. Это было исправлено путем обеспечения того, чтобы во всех случаях, когда я вызывал функцию «диапазона», она включала именно тот лист, на который я пытался ссылаться. (Если ничего не указано, по умолчанию используется активный)

1 Ответ

2 голосов
/ 28 мая 2020

Вам нужно всегда ссылаться на свои диапазоны, вы забыли ссылаться на Cells(Rows.Count...).

Также вы можете сделать свой код более читабельным следующим образом:

Dim totalRows As Double
With Workbooks("Mastersheet").Worksheets("masterBudgetSheet")
    totalRows = .Range("A8:A" & .Cells(.Rows.Count, "A").End(xlUp).Row).Rows.Count
End with

Таким образом, с единственное использование точки перед вашим диапазоном, вы ссылаетесь на With Workbooks("Mastersheet").Worksheets("masterBudgetSheet") между With выражением

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