Какое максимальное количество элементов управления может содержать форма VBA? - PullRequest
5 голосов
/ 22 апреля 2010

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

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

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

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

Ответы [ 4 ]

4 голосов
/ 22 апреля 2010

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

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

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

3 голосов
/ 22 апреля 2010

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

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

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

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

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

2 голосов
/ 22 апреля 2010

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


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

Общее правило:

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

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

GoodLUCK !!

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


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

0 голосов
/ 22 апреля 2010

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

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