Discussione: Corso VBA
Visualizza messaggio singolo
Vecchio 01-06-2014, 10.36.07   #28
Alexsandra
Senior Member
WT Expert
 
L'avatar di Alexsandra
 
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.208
Alexsandra è un gioiello raroAlexsandra è un gioiello raroAlexsandra è un gioiello raroAlexsandra è un gioiello raro
I Controlli CheckBox - OptionBox e ToggleButton



Il valore della proprietà di un CheckBox indica se è selezionato o meno. Un valore True indica che la casella è selezionata, False indica che è deselezionato e il valore Null indica che non è né attivo e né disattivo, e il CheckBox apparirà ombreggiato in questo caso. Per usare le 3 impostazioni si deve impostare Il valore della proprietà TripleState che può essere impostato sia nella finestra Proprietà o utilizzando una macro o codice VBA

Esempio: Visualizzare il valore del CheckBox, indicando se è selezionato o in uno stato Null
Codice:
Private Sub UserForm_Initialize()
With Me.CheckBox1
.TextAlign = fmTextAlignCenter
.TripleState = True            
End With
End Sub
 
Private Sub CheckBox1_Change()
If CheckBox1.Value = True Then
MsgBox "True"
ElseIf CheckBox1.Value = False Then
MsgBox "False"
Else
MsgBox "Null"
End If
End Sub
Esempio: Attivare una casella di testo TextBox solo se è selezionato il CheckBox
Codice:
Private Sub UserForm_Initialize()
Me.TextBox1.Enabled = False
End Sub
 
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
TextBox1.Enabled = True
Else
TextBox1.Enabled = False
End If
End Sub
Il Controllo OptionButton
Il controllo optionButton è usato per fare una scelta tra più opzioni ed è indicato anche come Radio Button, che sceglie un'opzione da un gruppo di opzioni che si escludono a vicenda. Se sono presenti vari OptionButtons in una Form e non sono raggruppati, selezionandone uno si deseleziona tutte gli altri presenti nella Form. Tutti gli OptionsButtons all'interno di un gruppo specifico si escludono a vicenda all'interno di quel gruppo e non influenzano la selezione di altre OptionButtons di fuori di tale gruppo, inoltre possono essere raggruppati con le seguenti modalità:
  • Utilizzando la proprietà GroupName : Gli optionButtons possono essere prima aggiunti a un Form e poi assegnato ad un gruppo tramite la proprietà GroupName, in questo modo gli OptionButtons aventi lo stesso gruppo si escludono a vicenda selezionandone uno
  • Utilizzando un controllo Frame: Prima si aggiungere il controllo Frame alla Form e quindi si disegnano gli OptionButtons all’interno della stessa. Ogni Frame separa gli OptionButtons presenti al suo interno da altri presenti in altri frame indipendentemente che gli altri abbiano lo stesso GroupName. Tuttavia, potrebbe essere preferibile raggruppare gli OptionButtons utilizzando la struttura GroupName invece di usare un frame solo per questo scopo, per risparmiare spazio e ridurre le dimensioni del form.
  • Utilizzando un controllo Multipage che è anch’esso un contenitore e può essere utilizzato per raggruppare o organizzare i controlli all'interno di ciascuna delle sue pagine. Ogni pagina di un controllo multipage separa gli OptionButtons, indipendentemente dal fatto che tutte le OptionButtons (in tutte le pagine) hanno lo stesso GroupName .
Il valore di proprietà di un OptionButton indica se si è selezionato o meno. Un valore True indica che è selezionato, False è il valore di default e indica che non è selezionata.

Esempio: Determinare quali controlli all'interno di un Frame vengono selezionati
Codice:
Private Sub CommandButton1_Click()
Dim ctrl As Control
For Each ctrl In Frame1.Controls
If ctrl.Value = True Then
MsgBox ctrl.Caption
End If
Next
End Sub
Esempio: Determinare quale OptionButton all'interno di un Frame, è selezionato:
Codice:
Private Sub CommandButton1_Click () 
Dim ctrl As Control
For Each ctrl In Frame1.Controls
If TypeOf ctrl Is msforms.OptionButton Then
If ctrl.Value = True Then
MsgBox ctrl.Caption & " è selezionato", vbOKOnly, "Seleziona un OptionButton"
End If
End If
Next ctrl
End Sub
Esempio: Determinare quale CheckBoxes all'interno di un frame, vengono selezionati:
Codice:
Private Sub CommandButton1_Click()
Dim ctrl As Control
For Each ctrl In Frame1.Controls
If TypeOf ctrl Is msforms.CheckBox Then
If Not TypeOf ctrl Is msforms.OptionButton Then
If ctrl.Value = True Then
MsgBox ctrl.Caption & " is selected", vbOKOnly, "Selected CheckBoxes"
End If
End If
End If
Next ctrl
End Sub
Si deve tener presente che il test per il CheckBoxe, cioè TypeOf, potrebbe non essere risolutivo, i controlli OptionButton e ToggleButton controllano anche l'interfaccia della casella e soddisfano questa condizione

Esempio: Determinare quale OptionButton, in una Form, con un particolare GroupName, viene selezionato.
Codice:
Private Sub CommandButton1_Click()
Dim ctrl As Control
For Each ctrl In Me.Controls
If TypeOf ctrl Is msforms.OptionButton Then
If ctrl.GroupName = "GroupA" Then
If ctrl.Value = True Then
MsgBox ctrl.Caption & " è selezionato", vbOKOnly, "Seleziona un OptionButton"
End If
End If
End If
Next ctrl
End Sub
Con un CheckBox, l'utente può selezionare più opzioni, selezionando ogni CheckBox che rappresenta un’opzione disponibile nella scelta da eseguire, mentre invece un OptionButton viene utilizzato quando l'utente è autorizzato a selezionare solo una singola opzione. CheckBox può essere utilizzato in modo singolare, cioè un singolo CheckBox può essere selezionato o deselezionato (cliccando sul controllo) che indica se l'opzione deve essere esercitata o meno. OptionButton invece vengono utilizzati in multipli di o più, per indicare la scelta tra varie opzioni in modo esclusivo, inoltre viene deselezionato solo selezionando un altro OptionButton e non facendo clic su se stesso


Il controllo ToggleButton
Il controllo ToggleButton è un controllo che esegue un'azione quando si clicca una volta e il pulsante rimane premuto, e un'azione diversa quando si clicca una seconda volta e si rilascia il pulsante. In sostanza si comporta come un normale interruttore e dispone di due possibilità, On e Off. Si può avere un valore True quando appare come premuto o False quando appare non premuto. ToggleButton sembra un incrocio tra un CheckBox (funzionalità toggle) e un CommandButton (aspetto cliccabile e simili).

Nota: ToggleButton può anche avere un valore Null (né selezionato né deselezionato) in cui apparirà ombreggiato, se la proprietà TripleState è impostata su true.

[i]Esempio è/i]: Utilizzare un controllo ToggleButton per alternare l'ordinamento tra ordine ascendente o ordine discendente di un intervallo di celle



Quando ToggleButton viene premuto, i dati nella colonna A e B vengono ordinati in ordine crescente e il pulsante viene visualizzato di colore verde, quando viene rilasciato le colonne vengono ordinate in ordine decrescente e il colore del pulsante diventa rosso
Codice:
Private Sub UserForm_Initialize()
Dim totalrows As Long
totalrows = Foglio3.Cells(Rows.Count, "A").End(xlUp).Row
Me.ToggleButton1.Value = True
Me.ToggleButton1.Caption = "Ordina in Discendente"
Me.ToggleButton1.Font.Bold = True
Me.ToggleButton1.BackColor = RGB(0, 255, 0)
Foglio3.Range("A2:B" & totalrows).Sort Key1:=Foglio3.Range("A2"), Order1:=xlAscending
End Sub

Private Sub ToggleButton1_Click()
Dim totalrows As Long
totalrows = Foglio3.Cells(Rows.Count, "A").End(xlUp).Row
If Me.ToggleButton1.Value = True Then
Me.ToggleButton1.Caption = "Ordina in Discendente"
Me.ToggleButton1.BackColor = RGB(0, 255, 0)
Foglio3.Range("A2:B" & totalrows).Sort Key1:=Foglio3.Range("A2"), Order1:=xlAscending
ElseIf Me.ToggleButton1.Value = False Then
Me.ToggleButton1.Caption = "Ordina in Ascendente"
Me.ToggleButton1.BackColor = RGB(255, 0, 0)
Foglio3.Range("A2:B" & totalrows).Sort Key1:=Foglio3.Range("A2"), Order1:=xlDescending
End If
End Sub
Esempio: Utilizzare ToggleButton per nascondere o scoprire colonne o righe:
Codice:
 Private Sub ToggleButton1_Click()
If ToggleButton1.Value = True Then
Foglio3.Columns("B").EntireColumn.Hidden = True
Foglio3.Columns("C").EntireColumn.Hidden = False
Else
Foglio3.Columns("B").EntireColumn.Hidden = False
Foglio3.Columns("C").EntireColumn.Hidden = True
End If
End Sub
 
Private Sub ToggleButton1_Click()
Rows("1:3").Hidden = Not Rows("1:3").Hidden
End Sub
Esempio: Utilizzare CheckBox per nascondere o scoprire colonne o righe
Codice:
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
Foglio3.Columns("B").EntireColumn.Hidden = True
Foglio3.Columns("C").EntireColumn.Hidden = False
Else
Foglio3.Columns("B").EntireColumn.Hidden = False
Foglio3.Columns("C").EntireColumn.Hidden = True
End If
End Sub
 
Private Sub CheckBox1_Click()
Rows("1:3").Hidden = Not Rows("1:3").Hidden
End Sub
___________________________________

- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale -
Alexsandra non è collegato