Ricerca OptionButton automaticamente



  • Ricerca OptionButton automaticamente
    di Roby73 (utente non iscritto) data: 07/02/2015 17:09:09

    Il codice VBA sotto elencato funziona correttamente. Cerca tutti i controlli OptionButton e assegna il Caption in base alle celle cercate del foglio 2 di Excel. Gli OptionButton creati nella Form hanno il nome e caption iniziale uguale, cambia solo l'indice numerico (OpbSerie22, OpbSerie23, OpbSerie24, ecc.). Quando eseguo la Sub, non trova i controllo in ordine come da posizione originale, trova priva OpbSerie31, poi OpbSerie26, ecc.. Ho provato a controllare il TabIndex delle prorpietà ma sono esattamente in ordine come da nome, inizia da 0 poi 1,2,ecc.
    Per cortesia qualcunomi può dare un aiuto? La sub funziona correttamente, ma non è bella da vedere graficamente, anche perché se nella form ho 6 OptionButton, e nel foglio ho 4 descrizioni, mi lascia dei Caption vuoti a "caso". Chiedo anche se è possibile all'interno di una Listbox impostare allineamenti diversi tra colonne, cioè colonna 1 allineamento testo a sx, colonna 2 allineamento testo a dx, ecc., e se si possono anche impostare formati, cioè colonna 1 testo, colonna 2 valuta, ecc.
    In attesa di una vostra cordiale risposta porgo distinti saluti.

    Grazie
    Robero

     
    Private Sub Assegna_Nome_OptionButton(NomeFr, NomeLst)                              'Trova automaticamente tutti gli OptionButton e gli attribuisce il Nome
    
            Dim OpB As Control                                                          'Definische la variabile come "tipo controlli"
            NomeLst.Clear                                                               'Pulisce la ListBox da valori precedenti
            NmrRiga = 2                                                                 'Attribuisce il numero di riga iniziale per la ricerca delle descrizioni
            NmrColonna = 7                                                              'Attribuisce il numero di colonna iniziale per la ricerca delle descrizioni
            Do                                                                          'Inizia un loop
               DscRiga = Worksheets(2).Cells(NmrRiga, 1)                                'Legge il valore della cella nella cartella 2 (foglio dati)
               If DscRiga = NmrCap Then Exit Do                                         'Esce dal loop quando trova il valore del capitolato corrispondente
               NmrRiga = NmrRiga + 1                                                    'Incrementa il numero di riga
            Loop Until DscRiga = "FINE"                                                 'Finisce il loop fino a trovare la cella con la scritta FINE
            For Each OpB In NomeFr.Controls                                             'Inizia un ciclo For fino a quando non trova tutti i controlli del FRAME
                If TypeOf OpB Is MsForms.OptionButton Then                              'Verifica che il controllo sia un OptionButton per eseguire le operazioni sucessive
                   DscRiga = Worksheets(2).Cells(NmrRiga, NmrColonna).Value             'Legge il valore descrizione in al variare del numero colonna, la riga è già fissata
                   OpB.Caption = DscRiga                                                'Trascrive nel campo CAPTION il valore della serie che appare nel FRAME
                   OpB.Value = False                                                    'Disabilita OptionButton da attivazioni precedenti
                   NmrColonna = NmrColonna + 1                                          'Incrementa il numero colonna
                End If
            Next
            
    End Sub
    
     
    
    
     
    



  • di Vecchio Frac data: 07/02/2015 17:21:45

    Abbi pazienza, non mi è chiaro lo scenario.
    E' possibile avere un file di esempio? anche il problema reale non mi è chiaro... cosa *non* funziona come vorresti? qual è lo scopo della sub?
    "La sub funziona correttamente, ma non è bella da vedere graficamente" ---> ?
    Per le opzioni avanzate della ListBox, temo che non sia possibile nessuna delle feature che hai elencato, ma vorrei essere smentito, confesso che vado a memoria e non ho provato.