Domanda

Al momento sto costruendo un app Excel 2003 che richiede una forma orribilmente complessa e sono preoccupato per le limitazioni sul numero di controlli. Attualmente ha 154 controlli (contati usando Me.Controls.Count - questo dovrebbe essere accurato, giusto?), Ma è probabilmente solo circa un terzo completo. Il flusso di lavoro in realtà si inserisce un singolo modulo, ma credo che posso dividerlo se devo proprio.

Vedo prova in una ricerca di Google che VB6 (questo di solito include VBA) ha un limite rigido di 254 controlli in un modulo. Tuttavia, ho creato un modulo fittizio con oltre oltre 1200 controlli che ancora caricati e sembrava funzionare bene.

Ho fatto prendere un po 'di memoria' errori quando si cerca di aggiungere specifiche combinazioni di controlli, però, dire che 800 pulsanti e le 150 etichette, portandomi a pensare che qualsiasi limite potrebbe essere influenzata dai requisiti di memoria di ogni tipo di controllo.

Qualcuno ha qualche informazione che possa aiutare a garantire che I o, cosa ancora più importante, gli altri utenti con ambienti diversi non incorrere in eventuali problemi di memoria con una grande forma così?

È stato utile?

Soluzione

La maggior parte dei controlli MSForms sono senza finestre (come in essi non sono veri finestre, anzi sono tratte direttamente dalle forme motore di VBA come oggetti grafici) che sono "leggero" al confronto. Questo significa che è possibile eseguire il dump di più su un form di quanto si potrebbe utilizzare equivalenti controlli non MSForms su un form VB6.

Non so qual è il limite superiore è, ma sarà essere sia un limite assoluto o di un limite imposto dalla risorse disponibili, quindi se è possibile aggiungere 1.200 senza incontrare uno di questi e Excel si sta comportando in termini di memoria utilizzare si dovrebbe essere ok.

Detto questo, che il numero di controlli sembra ancora moltissimo da presentare per l'utente in una volta!

Altri suggerimenti

Non v'è alcun limite rigido per il numero massimo di controlli di una maschera. Come già detto in un'altra risposta, questo può variare in base a hardware, la versione di Excel, e il sistema operativo.

Purtroppo, ho avuto troppa esperienza a costruire forme VBA con troppi controlli. : (

posso dire, che una volta arrivati ??al di sopra di circa 200 controlli, si può iniziare a notare alcuni strani / intermittente occorrenze / errori.

Una cosa che ho trovato, completamente per tentativi ed errori, è che il controllo Frame, tipicamente usato per gruppi attesa di pulsanti di opzione, sembra causare più problemi di qualsiasi altro controllo. Se creo forme senza controlli Frame, posso avere più controlli su quella forma prima di eseguire nei guai.

Ho scoperto che non importa quante controlli necessari, in genere possono da classificati in diversi gruppi. Se un particolare gruppo o categoria sta per contenere più di una dozzina di controlli (tra cui le etichette) è quasi sempre meglio avere il pulsante per quella categoria che lancerà un sotto-modulo. Questo aiuta molto a ridurre la complessità della forma principale.

Nessun regola dura n soft ...


Non c'è un numero definito di controlli che VBA limiterà a.
E 'del tutto dipende dal sistema si esegue su.

Come regola generale di pollice:

  • Ridurre il numero di controlli.
  • Usa controlli griglia invece di array di pulsanti.
  • Spalato in forme logiche per ulteriori semplicità.
  • leggeri controlli (maniglia-meno controlli), visto che consumano meno memoria.

Oltre a questo, se ancora si utilizza più di 100 controlli sullo schermo (come dici di essere), allora il suo tempo si ha assunto un nuovo designer dell'interfaccia utente per il progetto.

Goodluck !!

PS :. Do cercare di dividere il modulo in su, se possibile
Non riesco a immaginare di utilizzare qualsiasi software che getta su 154 controlli in una sola schermata.
(MS-Word è molto vicino ;-))


UPDATE: Alcune cose per il vostro riferimento qui sotto ...

  

Cerco di stare lontano da userforms che sono così grande. Preferisco di gran lunga utilizzare il foglio di calcolo per gestire la raccolta dei dati per le cose così grande. Se ci sono dipendenze, allora mi nascondo / scoprire righe, se necessario, o utilizzare più fogli. Trovo sia una soluzione più facile (a volte).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top