Controllo Griglia in VBA per UserForm Excel - TheTrusterGrid

TheTruster

Utente abituale
Expert
19 Gennaio 2021
385
45
Office e VBA
56
Salve a tutti!

Vorrei presentarvi un progetto che ho realizzato in questi giorni e che vorrebbe, senza alcuna pretesa di autorevolezza o perfezione, colmare almeno parzialmente, una lacuna degli UserForm: la mancanza di un semplice controllo Griglia, utile a rappresentare dei dati in forma tabellare.



Il funzionamento del controllo è affidato ad una Classe che permette di definire, sulla base di un Frame passato come argomento, una tabella con le caratteristiche di nostro gradimento.

La classe espone anche una proprietà denominata DataSource, attraverso la quale è possibile indicare un Range di uno specifico Foglio di Lavoro per averlo immediatamente sulla tabella inserita sull'UserForm.

La classe possiede delle altre Proprietà e Metodi che illustrerò di seguito per fornire almeno una base per capirne il funzionamento e facilitarne l'utilizzo.

Proprietà
  • ActiveCol - Restituisce l'indice di colonna della cella attualmente selezionata
  • ActiveRow - Restituisce l'indice di riga della cella attualmente selezionata
  • AlternateRows - Restituisce o imposta lo stile a "righe alternate" della griglia
  • AltRowFirstColor - Restituisce o imposta il colore primario per lo stile a "righe alternate" della griglia
  • AltRowSecondColor - Restituisce o imposta il colore secondario per lo stile a "righe alternate" della griglia
  • Cols - Restituisce o imposta il numero di colonne della griglia
  • Rows - Restituisce o imposta il numero di righe della griglia
  • ColumnHeader - Restituisce la collection delle intestazioni di colonna e consente di impostarne il testo
  • ColumnWidths - Restituisce o imposta la larghezza delle colonne, tramite una stringa separata da punti e virgola.
  • DataSource - Restituisce o imposta il Range del Foglio di Lavoro Excel con il quale la griglia è popolata
  • DataSourceHasHeader - Restituisce o imposta il valore (True/False) che indica se la prima riga del Range è quella delle intestazioni di colonna
  • GridColor - Restituisce o imposta il colore dei bordi delle celle
  • SelectEntireRow - Restituisce o imposta il valore (True/False) per determinare se il click sulla cella evidenzia tutta la riga
  • TextMatrix - Restituisce o imposta il valore della cella, passando come argomento riga e colonna
Metodi
  • AddItem - Aggiunge una riga alla tabella all'indice specificato oppure, se omesso, in coda alla tabella.
  • RemoveItem - Rimuove una riga dalla tabella
Eventi
  • CellClick - Evento rilasciato quando una cella viene selezionata
  • Scroll - Evento rilasciato quando la griglia viene scrollata attraverso le ScrollBars
  • SelectionChange - Evento rilasciato quando cambia la cella selezionata
Il codice necessario alla costruzione della Griglia è molto semplice ed immediato.
Basta disporre sull'UserForm un Frame delle dimensioni esatte che dovrà avere la nostra Griglia; da codice, istanziare la classe e determinarne le caratteristiche, quindi lanciare il comando CreateTable, passando come argomento il nome del controllo Frame precedentemente predisposto.
Nel codice seguente, ad esempio, la griglia viene popolata tramite la proprietà TextMatrix.

Visual Basic:
    With TTGrid3
        .Rows = 50
        .Cols = 3
        .SelectEntireRow = False
        .AltRowFirstColor = RGB(255, 250, 240)
        .AltRowSecondColor = RGB(240, 250, 255)
        .AlternateRows = True
        .ColumnHeader(0) = "Elenco 1"
        .ColumnHeader(1) = "Elenco 2"
        .ColumnHeader(2) = "Elenco 3"
        .CreateTable Frame3
        For r = 0 To .Rows - 1
            For c = 0 To .Cols - 1
                .TextMatrix(r, c) = "Dipendente " & 1 + Int(Rnd(1) * 100)
            Next c
        Next r
    End With
Nel progetto di esempio trovate la gestione di tutte le proprietà implementate con il relativo codice per farlo.

In caso di problemi o (inevitabili) bugs, cercherò di fare il possibile per risolverli e ringrazio fin d'ora quanti vorranno provarlo facendomi sapere le loro impressioni.

TheTruster
 

Allegati

TheTruster

Utente abituale
Expert
19 Gennaio 2021
385
45
Office e VBA
56
Salve a tutti,
Riposto il file già allegato in precedenza perché Bruno @Bruno mi ha fatto notare che, aprendo il progetto con Office 365, si verifica un errore dovuto alle impostazioni di sicurezza per i file scaricati da internet.
Avendomi segnalato anche una possibile soluzione, riallego il file corretto, che non dovrebbe soffrire di questo problema.

Rimango aperto a commenti e critiche e se qualcuno avesse riscontrato ulteriori problemi o fosse interessato all'implementazione di ulteriori proprietà e/o caratteristiche alla Griglia, sarei lieto se potesse farmelo sapere.

TheTruster

P.S.: un moderatore potrebbe sostituire l'allegato al primo post? Grazie! cappello_saluta
 
  • Like
Reactions: Robyprog

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!