Ricerca OptionButton automaticamente
Hai un problema con Excel? 
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.
Vuoi Approfondire?