scroll bar che non voglio



  • scroll bar che non voglio
    di marinoernestoch (utente non iscritto) data: 24/07/2017 18:59:11

    Buon giorno.
    E' circa un annetto che non scrivo un VBA x Excel, quindi un po' di ruggine c'è.
    E' noto che in una list box a più colonne, tutte le colonne hanno il medesimo formato (nel mio caso l'allineamento). Allora ho creato tante list box quante sono le colonne, alle quali ho assegnato il proprio allineamento. Nel caso di ricorrenze superiori al numero visibile, appaiono in automatico le barre di scorrimento verticale. Appaiono anche le barre si scorrimento orizzontali, nonostante ci sia sufficiente spazio a contenere i valori. Allora ho inserito una frame all'interno della quale ho posizionato le colonne 'secondarie' (di cui non voglio le barre di scorrimento).
    Sia la userform che la frame hanno KeepScrollBarsVisible = fmScrollBarsNone mentre la userform ha ScrollBars = fmScrollBarsVertical (con le list box alle quali servono le barre di scorrimento) e la frame ha
    ScrollBars = fmScrollBarsNone (con le list box sulle quali non voglio le barre di scorrimento).
    Nonostante ciò, ho barre di scorrimento a destra e manca che non voglio.
    Il foglio è in formato excel 2003 x compatibilità con altri pc, ma excel è verisione 2010.
    Chi mi può aiutare?
    Mille Grazie.



  • di Vecchio Frac data: 24/07/2017 20:18:06

    Ciao ernestomarinoch, ben ritrovato, ricordo dei tuoi lavori particolarmente complessi :)
    Come prima soluzione alternativa ti suggerisco l'uso di una Listview che è anche più versatile ed offre la possibilità di inserire icone nei diversi listitems.
    Il problema specifico, visto che ho risposto al volo, non l'ho ancora guardato :)





  • di Vecchio Frac data: 24/07/2017 20:29:07

    Sto testando il tuo file e sto cercando di capire qualcosa. La maschera non è di per sé intuitiva e non ci sono spiegazioni sul funzionamento. Sono riuscito ad avere un barlume solo spulciando il codice ma sinceramente non dovrebbe essere così... dovrebbe essere che illustri uno scenario (o un contesto: fare questo per vedere quest'altro, inserire tot e premere il pulsante) per riprodurre la condizione indesiderata. Non riesco a inserire valori validi (e non posso fare mille tentativi nè debuggare tutto il lungo codice) per avere tanti valori nelle listbox tali che si presentino le scrollbars. Dacci un aiutino :)





  • di marinoernestoch data: 24/07/2017 21:17:43

    Grazie dell'immediata risposta, VecchioFRac.
    Sto attivando il nuovo controllo che mi hai suggerito, ma mi domando: poi l'applicazione girerà su excel 2003?
    Inizio a capire come funziona, leggendo qua e là.
    Rispondo invece al tuo quesito: di fatto il foglio non è documentato xchè è quello su cui sto lavorando.
    L'obiettivo è: date due aree, che non necessariamente sono sullo stesso foglio, anzi a regime saranno su fogli di cartelle diverse, stabilire quali dati (solitamente prezzi) dovranno essere copiati. Il foglio base è quello dove desidero ottenere i risultati. IL dati secondari sono quelli da copiare. I dati sono: l'identificativo (alias chiave), l'importo ed il segno. L'identificativo e l'importo sono obbligatori. Il segno NO: avrò dei casi in cui la stessa colonna conterrà o solo valori positivi o solo valori negativi. (la fase di analisi del segno non è ancora inclusa nella logica).
    A fronte di corrispondenza tra i valori oltre a visualizzare la situazione deciderò se copiare o lasciare i valori invariati (anche questa logica è ancora da implementare. Come: l'attuale check box -allinea secondario- diventerà un option box con 3 possibilità).
    Come definire i dati: selezionare le celle contenente gli identificativi base e cliccare sul pulsante ID della frame BAse. Posizionarsi poi su una qualsiasi cella della colonna contenente i valori e cliccare il pulsante VAL. In alternativa nel campo VAlore inserire la lettera della colonna (o il suo numero) del campo (se la col. è C posso inserire C o 3 nel campo). Stesso per il segno, con l'aggiunta che se nella colonna è insito il segno, con l'option dichiaro se minimo (il negativo) o massimo (se positivo). Fatte le scelte per i valori BASE, si passa a quelle secondarie (dove leggerò i valori). Le scelte dei dati devono essere obbligatoriamente sequenziali. Il tutto potrà, a regime, lavorare x righe o per colonne. Ora sto testando la fase per colonne. da qui il foglio di campione.
    Alla fine delle scelte un bel click sul pulsante Allinea.
    spero di essere stato chiaro.
    grazie ancora della disponibilità, vecchio frac



  • di Vecchio Frac data: 24/07/2017 22:26:07

    cit. "l'applicazione girerà su excel 2003? "
    ---> Sì. La Listview è un controllo inserito in MS Forms 2.0 da tempo immemore :)

    cit. "Alla fine delle scelte un bel click sul pulsante Allinea. "
    ---> Ok. Tutto è filato liscio e ho pure capito la logica (non naturalmente il meccanismo di calcolo ma non mi interessa): i "non trovati" appartengono all'insieme dei valori base ma non dei valori secondari. Ora che ho la situazione in mano vediamo se riesco a tirare fuori un'idea ^_^





  • di Vecchio Frac data: 24/07/2017 23:08:39

    Allora: dalle prove che ho fatto, anche il font influisce sulla presenza della scrollbar quanto la larghezza della listbox e l'allineamento. Impostando Calibri 6 e una larghezza di 58 punti con l'allineamento a sinistra del testo, la scrollbar orizzontale sparisce. Non ci sono (neanche googlando) altri metodi. Cosa che invece (mi pare di ricordare) che la Listview riesce a superare.






  • di marinoernestoch data: 24/07/2017 23:35:48

    Grazie VecchioFrac.
    Per quanto riguarda la scrollbar orizzontale, (ho fatto altre prove) mi pare poco 'bello' che per 2 caratteri ( left(da_cercare,2)) con dimensione standard ( ho remmato l'inizializzazione al 10), e una width di 60, appaia lo scroll, pur lasciando uno spazio di circa 1cm. Ci deve essere un errore, tanto grande che non lo vedo!. Di listbox ne ho fatte diverse, ma un caso così, non ricordo di averlo visto!
    grazie.



  • di Vecchio Frac data: 25/07/2017 07:47:35

    E perchè non una listbox unica con i valori nelle colonne con larghezza diversa (*)? La listbox sarebbe grande a sufficienza da far sparire la barra di scroll orizzontale.

    (*) è perchè vuoi allineamenti diversi in modo da rendere esteticamente gradevole il confronto tra i valori? (valore | a | <= | b |)





  • di Vecchio Frac data: 25/07/2017 10:29:53

    Ma non devi preoccuparti di "tediare" alcuno :)
    Gli escamotages (workarounds) nascono proprio per sopperire alle lacune dei controlli standard dei prodotti Office.
    Comunque credo che sia una buona idea (era venuta anche a me l'idea di un Listbox unico, credo che non avrai nemmeno bisogno del frame se la larghezza della Listbox è sufficientemente ampia da mostrare tutti i valori insieme).
    Rivedi un po' il design perchè costringere l'utente a inserire in sequenza tutti i valori nell'ordine richiesto pena la cancellazione dei dati inseriti è un po' barboso ^_^





  • di marinoernestoch data: 25/07/2017 10:53:25

    List unica= già fatta. Devo studiare bene come allineare i valori o passare alla listview (userò se posso la listview, così imparo una cosa nuova)
    Obbligatorietà sequenza= se non la metto, risulta estremamente difficile verificare le intersezioni delle aree (se su stesso foglio). Concordo con la noiosità della sequenza: ho sopperito segnalando, se il caso, la "non sequenzialità delle scelte" (compromesso). L'azzeramento avviene se clicco sul pulsante sblocca (alias esci e riattiva la funzione).
    garzie.



  • di marinoernestoch data: 27/07/2017 07:51:11