Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2013, 17:07   #1
Alenka546
 
Регистрация: 08.10.2013
Сообщений: 3
По умолчанию Помогите с синтаксисом диапазона

Я новичок в vba, нигде не смогла найти готовый ответ на нижеследующий вопрос, поэтому прошу помощи:

У меня есть именованный двумерный диапазон Data, в нем один из столбцов называется Discript. Есть пользовательская функция
VisibleCells(rgRange As Range), которая должна определить количество значений в видимых ячейках в столбце Discript.

Для возврата значения функции в ячейку пользовалась следующей записью:
Range("S2").FormulaR1C1 = "=personal.xlsb!VisibleCells(Da ta[descript])"
Сейчас мне нужно только вычислить это значение,
что-то типа
VisCells=VisibleCells(Data[descript]).
Проблема с синтаксисом диапазона.
Создавать новый диапазон для столбца descript не хотелось бы.

Последний раз редактировалось Alenka546; 08.10.2013 в 17:30.
Alenka546 вне форума Ответить с цитированием
Старый 08.10.2013, 22:38   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
один из столбцов называется Discript
Это как?
это такой заголовок столбца, или имя диапазона?

Вы бы пример файла прикрепили, - было бы куда проще помочь с кодом...
EducatedFool вне форума Ответить с цитированием
Старый 14.10.2013, 08:44   #3
Alenka546
 
Регистрация: 08.10.2013
Сообщений: 3
По умолчанию

Цитата:
это такой заголовок столбца, или имя диапазона?
Это заголовок одного из столбца в диапазоне. Я же написала, что создавать диапазон не хочу, т.к. мне кажется что есть какое-то другое решение

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

Отчет фильтрую по определенным критериям. Оставшееся количество строк я заношу в книгу со сводным отчетом по всем филиалам.

По каждому филиалу я веду отдельную книгу филиал.xlsx, в который переношу ежедневный отчет, присвоив имени листа сегодняшнюю дату (архив отчетов).

В Модуле Листа1 в приложенном примере я скопировала функцию, которой я пользовалась для определения количества строк в отчете, и процедуру, и т.к. на тот момент переменные были для меня чем-то не понятным, то пользуясь макрорекодером, я вставляла формулу в ячейках.
Range("S2").FormulaR1C1 = "=personal.xlsb!VisibleCells(Da ta[descript])". Т.о.формула вводится в ячейку, и диапазоном в формуле является один из столбцов именованного диапазона (в данном случае - descript), которому имя не присвоено! В данном случае мне все равно какой это столбец - мне нужно количество ячеек, и я понимаю, что нужно считать не так. Но не судите строго, т.к. это была моя первая заработавшая процедура.

Недавно решила сделать все красиво, с переменными и прочим, но в основе решила оставить ту же функцию, которой пользовалась раньше. И тут поняла, что вставленная в ячейку формула по названию столбца в имен.диапазоне Data, определяет массив ячеек в пределах этого столбца. А когда я прописываю эту функцию не как формулу в ячейке, а как формулу для вычисления переменной, это не работает - нужно присваивать имя диапазону в столбце descript.

У меня весь этот код лежит в личной книге макросов.
Вложения
Тип файла: rar 10.08 Novosibirsk.rar (24.8 Кб, 7 просмотров)
Alenka546 вне форума Ответить с цитированием
Старый 14.10.2013, 10:25   #4
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Код:
VisCells=VisibleCells(ActiveSheet.ListObjects("Data").ListColumns("descript").DataBodyRange)
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 14.10.2013, 12:16   #5
Alenka546
 
Регистрация: 08.10.2013
Сообщений: 3
По умолчанию

Step_UA, спасибо, то что надо!)
Alenka546 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблемы с heredoc синтаксисом Luca Brasi PHP 2 08.11.2012 00:54
проблема с синтаксисом types Молоток Общие вопросы Delphi 2 11.04.2011 13:36
Проблема с синтаксисом? Geddar PHP 1 30.06.2008 16:44
Казус с синтаксисом???... Sota Общие вопросы C/C++ 6 17.07.2007 19:15