Um único projeto pode conter até 32.000 identificadores (palavras não reservadas), incluindo (mas não limitado a) formulários, controles, módulos, variáveis, constantes, procedimentos, funções e objetos. Observe que o número real de identificadores é limitado pela memória disponível.
Os nomes de variáveis no Visual Basic não podem exceder 255 caracteres, e os nomes de formulário, controle, módulo e classe não podem exceder 40 caracteres. O Visual Basic não limita o número real de objetos diferentes em um projeto.
◆Limitações de Controle◆
Cada controle não gráfico (todos os controles, exceto formas, linhas, imagens e rótulos) usa uma janela. Cada janela utiliza recursos do sistema, portanto o número total de janelas que podem existir simultaneamente é limitado pelos recursos disponíveis. O limite exato depende dos recursos disponíveis do sistema e do tipo de controle utilizado. Para reduzir o consumo de recursos do sistema, você pode usar controles de forma, linha, rótulo e imagem em vez de controles de caixa de imagem ao criar ou exibir gráficos.
1. Número total de controles
O número máximo de controles permitidos em um único formulário depende do tipo de controles usados e dos recursos de sistema disponíveis. No entanto, existe um limite fixo de apenas 254 nomes de controle permitidos por formulário. Como todos os controles na matriz compartilham um nome de controle, a matriz de controle conta esse limite apenas uma vez. Em todas as versões, o limite dos índices da matriz de controle está na faixa de 0 a 32.767. Se você colocar controles sobre cada controle, como aninhar controles de quadro em um quadro, o Visual Basic geralmente não aceitará mais de 25 níveis de controles aninhados.
2. Restrições aos controlos especiais
A tabela a seguir lista as restrições de propriedade para controles especiais no Visual Basic.
Controles de caixa de listagem List e ListCount e controles de caixa de combinação: o número máximo de itens é 32K e o limite de tamanho para cada item é 1K (1024 bytes);
Controle de caixa de texto de texto: limitado a 64K;
Controle de rótulo de legenda: limitado a 1024 bytes;
Controles de botão de comando, controles de caixa de seleção, controles de quadro e controles de botão de opção: limitados a 255 caracteres e quaisquer títulos que excedam esses limites serão truncados;
Título da propriedade de controle personalizado: limitado a 32K
Controles de menu: limitado a 235 caracteres
Marcar todos os controles: limitado ao tamanho da memória disponível
Nomeie todos os controles: limitado a 40 caracteres
Observe que no Visual Basic, os nomes das propriedades de controle são limitados a 30 caracteres.
◆Restrições de código◆
O número total de linhas de código que podem ser carregadas em um formulário, classe ou módulo padrão é limitado a 65.534 linhas. Uma linha de código é limitada a 1.023 bytes. Não pode haver mais de 256 espaços iniciais antes do texto real em uma linha e não mais de 25 caracteres de continuação de linha (_) em uma linha lógica.
1. Procedimentos, tipos e variáveis
Não há limite para o número de procedimentos por módulo. Cada processo pode conter até 64K de código. Se um procedimento ou módulo exceder esse limite, o Visual Basic gerará um erro em tempo de compilação. Se você encontrar esse tipo de erro, poderá evitá-lo dividindo um procedimento particularmente grande em vários procedimentos menores ou movendo a declaração em nível de módulo para outro módulo. Visual Basic usa tabelas para armazenar nomes de identificadores (variáveis, procedimentos, constantes, etc.) no código. Cada tabela é limitada a 64K.
2. Tabela de declaração da biblioteca de vínculo dinâmico
Cada módulo de formulário e código usa uma tabela que descreve a estrutura do ponto de entrada da biblioteca de vínculo dinâmico. Cada estrutura tem cerca de 40 bytes e o tamanho da tabela é limitado a 64K, resultando em cerca de 1.500 declarações por módulo.
3. Lista de projetos
Todo o aplicativo utiliza uma tabela contendo todos os nomes. Esses nomes incluem:
·Nome constante
·Nome da variável
·Nome de definição de tipo personalizado
·Nome do módulo
·Nome da declaração do procedimento DLL
Não há limite para o tamanho total da tabela de nomes do projeto, mas as entradas que diferenciam maiúsculas de minúsculas não devem exceder 32K. Se o limite de 32K for excedido, o identificador PRivate poderá ser reutilizado em um módulo diferente para limitar o número de entradas que diferenciam maiúsculas de minúsculas a 32K.
4. Tabela de entrada
Cada vez que um identificador é referenciado em um módulo diferente, uma entrada é criada na tabela de entrada. Cada entrada tem pelo menos 24 bytes, mas limitada a 64K, portanto cada módulo pode ter aproximadamente 2.000 referências.
5. Tabela de entrada de módulo
Cada módulo desta tabela tem até 125 bytes, mas há um limite total de 64K, portanto cada projeto pode produzir aproximadamente 400 módulos.
◆Limitação de Dados◆
As restrições a seguir se aplicam a variáveis na linguagem Visual Basic.
1. Dados do formulário, padrão e módulo de classe
A seção de dados do módulo VBA (ou seja, os dados definidos na seção de declaração) de qualquer formulário ou módulo em Visual Basic possui até 64K de seção de dados, que inclui os seguintes dados:
·Variáveis locais declaradas com Static
·Variáveis em nível de módulo que não são arrays e strings de comprimento variável
·Cada matriz de módulo e string de comprimento variável ocupa 4 bytes
2. Procedimentos, tipos e variáveis
Se um procedimento ou módulo exceder o limite de código de 64 K, o Visual Basic gerará um erro em tempo de compilação.
Se as variáveis locais definidas em um procedimento excederem 64 K, um erro "Muitas variáveis locais não estáticas" será gerado.
Se as variáveis de nível de módulo definidas em um módulo excederem 64 K ou o tipo personalizado definido for maior que 64 K, ocorrerá um erro "Dados fixos ou estáticos não podem exceder 64 K".
Se você encontrar esse tipo de erro, poderá evitá-lo dividindo um procedimento muito grande em vários procedimentos menores ou movendo a declaração em nível de módulo para outro módulo.
Matrizes declaradas como variáveis não podem usar todo o espaço da matriz; apenas os descritores de matriz contribuem para o limite de 64K. Por exemplo, declarado em um procedimento ou como uma declaração em nível de módulo, Dimx(1000000)AsByte. No entanto, se você declarar uma matriz grande e de tamanho fixo de registros e, em seguida, declarar instâncias desses registros como variáveis, poderá ocorrer um estouro de memória.
3. Tipos personalizados
Embora a soma de muitas strings de comprimento variável de tipo personalizado possa exceder 64 K (cada string de comprimento variável de tipo personalizado ocupa apenas 4 bytes; e o conteúdo real da string é armazenado separadamente), as variáveis de tipo personalizado não podem exceder 64 K. Os tipos personalizados podem ser definidos com outros tipos personalizados, mas o tamanho total desse tipo não pode exceder 64K.
4. Espaço de pilha
Parâmetros e variáveis locais durante o tempo de execução ocupam espaço na pilha. Variáveis de nível de módulo e variáveis estáticas não ocupam espaço de pilha porque são alocadas na seção de dados do formulário ou módulo. Qualquer procedimento DLL chamado usa a pilha durante a execução.
O próprio Visual Basic usa a pilha, por exemplo, para salvar valores intermediários ao avaliar expressões.
O tamanho total da pilha disponível no Visual Basic é de um megabyte (1 MB) por thread. Entretanto, o tamanho da pilha pode exceder esse limite se houver memória livre adjacente.
◆Limitações de recursos do sistema◆
Certas limitações do Visual Basic e dos aplicativos criados com ele são afetadas pelo Microsoft Windows. Estas restrições variam dependendo da versão do Microsoft Windows.
Cada janela aberta utiliza recursos do sistema (a área de dados usada pelo Microsoft Windows). Se for executado além do intervalo de recursos do sistema, ocorrerá um erro de tempo de execução "Recursos disponíveis insuficientes para operação do Windows". Você pode selecionar "Sobre" no menu "Ajuda" do "Gerenciador de Programas" ou "Gerenciador de Arquivos" no Windows NT3.51, ou selecionar "Sobre" no menu "Ajuda do Windows Explorer" no Windows 95 e Windows NT4.0. para detectar a porcentagem de recursos restantes do sistema. Os aplicativos também podem chamar a API GetFreeSystemResources do Windows para recuperar recursos do sistema, fechar janelas (como formulários abertos e janelas de "código" e janelas em outros aplicativos) e sair dos aplicativos em execução.
->