Каково максимальное количество средств управления, которые может содержать форма VBA?

Я в настоящее время создаю приложение Excel 2003, которое требует ужасно сложной формы и волнуется по поводу ограничений на количество средств управления. Это в настоящее время имеет 154 средств управления (считаемое использование Me.Controls.Count - это должно быть точно, правильно?), но, вероятно, только приблизительно завершенная треть. Рабочий процесс действительно соответствует единственной форме, но я предполагаю, что могу разделить его, если я действительно имею к.

Я вижу доказательство в поиске Google, что VB6 (это обычно включает VBA) имеет жесткий предел 254 средств управления в форме. Однако я создал фиктивную форму с хорошо более чем 1 200 средствами управления, которые все еще загрузились и, казалось, работали просто великолепно.

Я действительно вытаскивал некоторых 'из памяти' ошибки при попытке добавить определенные комбинации средств управления, хотя, скажите 800 кнопок и 150 маркировок, ведя меня, чтобы думать, что любой предел мог бы быть затронут требованиями к памяти каждого типа управления.

У кого-либо есть информация, которая могла бы помочь гарантировать, чтобы я или, что еще более важно, другие пользователи с отличающимися средами не сталкивался ни с какими проблемами памяти с такой большой формой?

5
задан Lunatik 22 April 2010 в 10:01
поделиться

4 ответа

Большинство элементов управления MSForms не имеют окон (поскольку это не настоящие окна, а они рисуются непосредственно механизмом VBA Forms как графические объекты), которые по сравнению с ними являются «легковесными». Это означает, что вы можете выгрузить в пользовательскую форму больше, чем при использовании эквивалентных элементов управления, не относящихся к MSForms, в форме VB6.

Я не знаю, каков верхний предел, но это будет либо абсолютный предел, либо предел, налагаемый доступными ресурсами, поэтому, если вы можете добавить 1200, не сталкиваясь ни с одним из них, & excel ведет себя с точки зрения памяти использование у вас должно быть в порядке.

Тем не менее, такое количество элементов управления по-прежнему кажется слишком большим для одновременного представления пользователю!

4
ответ дан 14 December 2019 в 01:04
поделиться

Нет жесткого и мягкого правила ...


Нет определенного количества элементов управления, которыми VBA ограничит вас.
Это полностью зависит от системы, в которой он запущен.

Общее практическое правило:

  • Уменьшите количество элементов управления.
  • Используйте элементы управления сеткой вместо массивов кнопок.
  • Разделите его на логические формы для большей простоты.
  • Используйте облегченные элементы управления (элементы управления без ручки), поскольку они потребляют меньше памяти.

Кроме того, если вы все еще используете более 100 элементов управления на экране (как вы говорите), то самое время нанять нового дизайнера пользовательского интерфейса для проекта.

УДАЧИ !!

PS : Попытайтесь разделить форму, если возможно.
Я не могу представить себе программу, которая отображает 154 элемента управления на одном экране.
(MS-WORD довольно близко ;-))


ОБНОВЛЕНИЕ: Некоторые сведения для справки ниже ...

2
ответ дан 14 December 2019 в 01:04
поделиться

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

К сожалению, у меня слишком большой опыт создания форм VBA со слишком большим количеством элементов управления. : (

Я могу сказать, что как только вы получите более 200 элементов управления, вы можете начать замечать некоторые странные / периодические появления / ошибки.

Я обнаружил, полностью методом проб и ошибок, что элемент управления Frame , обычно используемый для хранения групп переключателей, кажется, вызывает больше проблем, чем любой другой элемент управления. Если я создаю формы без каких-либо элементов управления Frame, я могу получить больше элементов управления в этой форме, прежде чем столкнуться с проблемами.

Я обнаружил, что нет независимо от того, сколько элементов управления вам нужно, их обычно можно разделить на разные группы. Если определенная группа или категория будет содержать более дюжины элементов управления (включая метки), почти всегда лучше иметь кнопку для этой категории, которая запускает подформа. Это действительно помогает снизить сложность основной формы.

3
ответ дан 14 December 2019 в 01:04
поделиться

Я стараюсь держаться подальше от таких больших пользовательских форм. Я предпочитаю использовать электронную таблицу для сбора данных для таких больших вещей. Если есть зависимости, то я скрываю / показываю строки по мере необходимости или использую несколько листов. Я считаю, что это более простое решение (иногда).

0
ответ дан 14 December 2019 в 01:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: