близкие. Я новичок в программировании, пытаюсь написать макрос для извлечения некоторых строк данных из нескольких книг и компилировать их в новую книгу, а затем отображать их в виде графика. Я понял, как просмотреть исходные таблицы и кое-что еще, но сейчас я застрял в нескольких местах. (Для ясности я буду задавать разные вопросы в разных темах.)
Этот вопрос касается ошибки при использовании WorksheetFunction.CountA для получения номера списка элементов, которые я ищу. Я хочу знать номер, чтобы знать, когда я найду все свои строки поиска. Если я не могу найти их все, я хочу сообщить об этом пользователю и выйти.
Следуя совету по этот вопрос, я написал фрагмент для проверки функции CountA. Я получаю сообщение об ошибке «Требуется объект». Я просмотрел несколько тем на эту тему, но до сих пор не понял. Вот мой фрагмент кода:
Sub a_test_kpi_count()
Dim kpi_list_count As Integer
Set kpi_list_count = Application.WorksheetFunction.CountA("kpi_list")
MsgBox "There are " & kpi_list_count & "kpis in the list."
End Sub
Когда я запускаю код, редактор останавливается с выделенным либо «kpi_list_count», либо «CountA». Что ж, ЭТО ПОЛЕЗНО!
Я должен добавить, что «kpi_list» — это именованный диапазон на листе, где находится макрос. Однако я получаю ту же ошибку, когда указываю диапазон следующим образом:
Set kpi_list_count = Application.WorksheetFunction.CountA("K3:K7")
Следовательно, я не думаю, что именованный диапазон - моя проблема.
Толчок в правильном направлении был бы очень признателен!
ИЛИ, не стесняйтесь называть меня идиотом и указывать на мою очевидную ошибку! ;-)
РЕДАКТИРОВАТЬ:
Спасибо, Бен.
Этот код работает:
Sub a_test_KPI_count()
Dim KPIListCount As Long
KPIListCount = WorksheetFunction.CountA(Sheet1.Range("KPI_list"))
MsgBox "There are " & KPIListCount & "KPIs in the list."
End Sub
Благодарю вас! Как ни странно, это НЕ работает, когда я использую имя листа, кнопки. Являются ли имена листов чувствительными к регистру? Я спрашиваю, потому что редактор настаивает на «кнопках», а не «кнопках».
Еще пара вопросов для моего обучения, если можно, о некоторых ваших советах:
3, длинное и целочисленное. В данном случае я считаю пункты из короткого списка (‹6). Приемлемо ли здесь целое число, или лучше придерживаться Long?
- Кэмелкейс против змеиного футляра. Отмеченный. Это просто предпочтение более опытных программистов? Или есть функциональная разница?
Все ваши ответы были такими, на которые я надеюсь. Урок рыбалки, а не рыба! Благодарю вас!
kpi_list_count
является целым числом, удалитеSet
. - person Brian M Stafford   schedule 14.01.2020ThisWorkbook.Worksheets("Buttons")
вместоSheet1
. - person BigBen   schedule 14.01.2020Long
предпочтительнееInteger
. - person BigBen   schedule 14.01.2020snake_case
, это должно быть хорошей подсказкой! Кроме того, если/когда вы начнете заниматься ООП и реализовывать интерфейсы, вы обнаружите, что символы подчеркивания в именах общедоступных членов фактически сделают ваш код некомпилируемым, потому что подчеркивание действительно имеет особое значение в VBA. - person Mathieu Guindon   schedule 14.01.2020