Come utilizzare Visual Basic, Applications Edition (VBA) per modificare oggetti UserForm in Excel

Il supporto per Office 2003 è terminato

Il supporto Microsoft per Office 2003 è terminato l'8 aprile 2014. Questa modifica ha interessato gli aggiornamenti software e le opzioni di sicurezza. Ulteriori informazioni su come continuare a essere protetti.

IMPORTANTE: il presente articolo è stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l’obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre è perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilità per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualità della traduzione.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 829070
Sommario
In questo articolo viene descritto come modificare i moduli utente a livello di codice in Microsoft Excel. Include esempi e Microsoft Visual Basic, Applications Edition le macro (VBA) che illustrano come sfruttare le funzionalità del form e come utilizzare i controlli ActiveX™ disponibili per i form utente.

Nell'introduzione ai principi base delle Form (UserForms) viene illustrato come visualizzare i Form, come nascondere temporaneamente i Form, e come chiudere i Form. Vengono illustrate inoltre illustrato come utilizzare gli eventi più comuni associati ai form utente, ovvero la Inizializzare evento, il Fare clic su eventi e Terminare evento. Uno o più dei seguenti esempi dimostrano come utilizzare i seguenti controlli (Controlls) di ActiveX™ in un oggetto UserForm:
  • Etichetta controllo
  • Casella di testo controllo
  • Controllo CommandButton controllo
  • Controllo ListBox controllo
  • Controllo ComboBox controllo
  • Cornice controllo
  • Controllo OptionButton controllo
  • Casella di controllo controllo
  • ToggleButton controllo
  • Controllo TabStrip controllo
  • Controllo multiPage controllo
  • Barra di scorrimento controllo
  • Controllo SpinButton controllo
  • RefEdit controllo
  • Immagine controllo
INTRODUZIONE
In questo articolo viene descritto come utilizzare VBA per apportare modifiche in UserForm in Excel.
Informazioni
Microsoft fornisce esempi di programmazione a scopo puramente illustrativo, senza alcuna garanzia espressa o implicita. Ciò include, ma non limitato a, le garanzie implicite di commerciabilità o idoneità per uno scopo particolare. In questo articolo si presuppone che si abbia familiarità con il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire la procedura di debug. I tecnici del supporto Microsoft possono spiegare la funzionalità di una particolare procedura, ma in nessun caso possono modificare questi esempi per fornire funzionalità aggiuntive o creare procedure atte a soddisfare specifiche esigenze.

Nozioni fondamentali sulla UserForm

Come visualizzare un UserForm

La sintassi utilizzata per visualizzare un form a livello di codice è il seguente:
UserFormName. Mostra
Per visualizzare un form denominato UserForm1, utilizzare il codice seguente:
UserForm1.Show
È possibile caricare un oggetto UserForm in memoria senza effettivamente visualizzarlo. Un UserForm complesso potrebbe richiedere diversi secondi per visualizzarlo. Poiché un form è possibile precaricare in memoria, è possibile decidere di questo sovraccarico. Per caricare UserForm1 in memoria senza visualizzarlo, utilizzare il codice seguente:
Load UserForm1
Per visualizzare il form, è necessario utilizzare il metodoShow che è stato mostrato in precedenza.

Come nascondere temporaneamente un oggetto UserForm

Se si desidera nascondere temporaneamente un UserForm, utilizzare il metodonascondere . Si consiglia di nascondere un oggetto UserForm, se l'applicazione comporta lo spostamento tra i form utente. Per nascondere un form utente, utilizzare il codice seguente:
UserForm1.Hide
Per ulteriori informazioni, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:
213747 XL2000: Come spostarsi tra i moduli utente personalizzati con pulsanti di comando

Come rimuovere un oggetto UserForm dalla memoria

Per rimuovere un oggetto UserForm dalla memoria, utilizzare l'istruzione discaricamento . Per scaricare un form denominato UserForm1, utilizzare il codice riportato di seguito:
Unload UserForm1
Se si scarica un form in una routine evento associata a un oggetto UserForm o associato a un controllo in un form utente (ad esempio, si fa clic su un controlloCommandButton ), è possibile utilizzare "Me" parola chiave anziché il nome del form utente. Per utilizzare "Me" parola chiave per scaricare un form utente, utilizzare il codice seguente:
Unload Me

Come utilizzare gli eventi UserForm

Moduli utente supportano numerosi eventi predefiniti che è possibile associare routine VBA per. Quando si verifica l'evento, viene eseguita la procedura di cui è collegata all'evento. Una singola azione eseguita da un utente può avviare più eventi. Tra più frequentemente utilizzati eventi per un oggetto UserForm sono l'evento Initialize , l'evento Click e l'evento Terminate .

Nota Un modulo di Visual Basic che contiene una routine evento può essere definito un modulo "UserForm dietro". Un modulo che contiene le routine evento non è visibile nell'insieme Modules della finestra dell'Editor di Visual Basic di Microsoft Project Explorer. È necessario fare doppio clic sul corpo di un form per visualizzare il modulo di codice UserForm.

Come intercettare gli eventi di UserForm

Per intercettare gli eventi UserForm, procedere come segue:
  1. Creare una nuova cartella di lavoro in Excel.
  2. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  3. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  4. Fare doppio clic sul Form per visualizzare visualizzare finestra per UserForm.
  5. Nel modulo digitare il seguente codice:
    Private Sub UserForm_Click()    Me.Height = Int(Rnd * 500)    Me.Width = Int(Rnd * 750)End SubPrivate Sub UserForm_Initialize()    Me.Caption = "Events Events Events!"    Me.BackColor = RGB(10, 25, 100)End SubPrivate Sub UserForm_Resize()    msg = "Width: " & Me.Width & Chr(10) & "Height: " & Me.Height    MsgBox prompt:=msg, Title:="Resize Event"End SubPrivate Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)    msg = "Now Unloading " & Me.Caption    MsgBox prompt:=msg, Title:="QueryClose Event"End SubPrivate Sub UserForm_Terminate()    msg = "Now Unloading " & Me.Caption    MsgBox prompt:=msg, Title:="Terminate Event"End Sub
  6. Scegliere RunSub/UserFormdal menu Esegui .
Quando il form viene caricata, la macro utilizza l'evento Initialize per impostare la proprietà Caption di UserForm "Eventi eventi eventi!" e la proprietà BackColor su blu scuro.

Quando si fa clic su UserForm, viene generato l'evento Click . L'evento Click ridimensiona il form utente. Poiché è stata creata una procedura per l'evento Resize , due finestre di messaggio viene visualizzato dopo aver fatto clic UserForm. L'evento Resize si verifica due volte perché il codice dell'evento fare clic su modifica sia la proprietà Width e Height della UserForm .

Chiudere il form utente avvia l'evento QueryClose . L'evento QueryClose viene visualizzata una finestra di messaggio contenente il titolo assegnato UserForm nel codice per l'evento Initialize . È possibile utilizzare l'evento QueryClose quando si desidera eseguire una determinata serie di azioni, se l'utente chiude il form utente.

L'evento Terminate quindi genera una finestra di messaggio che indica che la didascalia del form utente UserForm1. L'evento Terminate si verifica dopo UserForm viene rimosso dalla memoria e la didascalia del form utente restituisce lo stato originale.

Come impedire che un oggetto UserForm viene chiusa utilizzando il pulsante Chiudi

Quando si esegue un UserForm, viene aggiunto un pulsante Chiudi in alto a destra della finestra UserForm. Se si desidera impedire che venga chiusa utilizzando il pulsante Chiudi UserForm, è necessario intercettare l'evento QueryClose .

L'evento QueryClose si verifica poco prima che il form viene scaricato dalla memoria. Utilizzare l'argomento CloseMode dell'evento QueryClose per determinare la modalità di chiusura del form. Il valore di vbFormControlMenu per l'argomento CloseMode indica che è stato scelto il pulsante Chiudi . Per mantenere attivo il form, impostare l'argomento Cancel dell'evento QueryClose su True. Per utilizzare l'evento QueryClose per impedire che un oggetto UserForm viene chiusa utilizzando il pulsante Chiudi , attenersi alla seguente procedura:
  1. Creare una nuova cartella di lavoro in Excel.
  2. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  3. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  4. Aggiungere un controllo CommandButton al form utente.
  5. Fare doppio clic sul Form per visualizzare visualizzare finestra per UserForm.
  6. Nella finestra del codice, digitare il seguente codice:
    Private Sub CommandButton1_Click()    Unload MeEnd SubPrivate Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)    IF CloseMode = vbFormControlMenu Then        Cancel = True        Me.Caption = "Click the CommandButton to close Me!"    End IfEnd Sub
  7. Scegliere RunSub/UserFormdal menu Esegui .
Il form non viene chiuso quando si fa clic sul pulsante Chiudi . È necessario fare clic sul controllo CommandButton per chiudere il form utente.

Per ulteriori informazioni, fare clic sui numeri seguenti per visualizzare gli articoli della Microsoft Knowledge Base:
207714 XL2000: Errori di runtime utilizzando l'insieme di oggetti UserForm
211527 XL2000: Impossibile trascinare UserForm controllo un foglio di lavoro
211868 XL2000: Errore esecuzione di macro che inserisce controllo UserForm
213582 XL2000: Problemi quando si utilizza una macro per aggiungere controllo UserForm
213583 XL2000: Impossibile visualizzare i moduli utente in altri progetti
213736 XL2000: Come determinare il tasto premuto con il pulsante del mouse
213744 XL2000: Come nascondere temporaneamente un oggetto UserForm
213747 XL2000: Come spostarsi tra i moduli utente personalizzati con pulsanti di comando
213749 XL2000: Come utilizzare un oggetto UserForm di immissione dei dati
213768 XL2000: Come ridimensionare dinamicamente un modulo utente
213774 XL2000: Come creare una schermata di avvio con un oggetto UserForm

Codice VBA

Excel include quindici diversi controlli che è possibile utilizzare oggetti UserForm. Questa sezione contiene vari esempi che utilizzano questi controlli a livello di codice.

Nota Il codice VBA incluso in questo articolo non contiene esempi che interessano tutte le proprietà e gli eventi per i controlli. Se necessario, è possibile utilizzare la finestra proprietà per visualizzare un elenco delle proprietà disponibili per un controllo. Per visualizzare un elenco di proprietà, dal menu Visualizza , scegliere Finestra Proprietà.

Come utilizzare la modalità di progettazione per controlli di modifica

Quando si utilizza l'Editor di Visual Basic per progettare una finestra di dialogo, si utilizza la modalità di progettazione. In modalità progettazione, è possibile modificare i controlli, è possibile modificare le proprietà di un controllo in un form nella finestra Proprietà. Per visualizzare la finestra Proprietà dal menuVisualizza , scegliere Finestra Proprietà.

Nota I controlli non rispondono agli eventi mentre si è in modalità progettazione. Quando si esegue una finestra di dialogo per visualizzare il modo in cui gli utenti vedono, il programma è in modalità di esecuzione. Le modifiche apportate alle proprietà di un controllo in modalità di esecuzione non vengono mantenute quando il form viene scaricato dalla memoria.

Nota Controlli rispondono agli eventi in modalità di esecuzione.

Come fare riferimento a controlli in un form utente

Si fa riferimento a controlli a livello di codice dipende dal tipo di foglio di modulo di Visual Basic in cui viene eseguito il codice. Se il codice viene eseguito da un modulo generale, la sintassi è la seguente:
UserFormName.Controlname.Property = Valore
Ad esempio, se si desidera impostare la proprietàText di un controllo TextBox denominato TextBox1 su un form denominato UserForm1 al valore di Bob, utilizzare il codice riportato di seguito:
UserForm1.TextBox1.Text = "Bob"
Se il codice in una routine che viene avviata da un evento di un controllo UserForm, non è necessario fare riferimento al nome del modulo utente. Al contrario, utilizzare il codice seguente:
TextBox1.Text = "Bob"
Quando si collega codice a un oggetto, il codice è collegato a uno degli eventi di tale oggetto. In molti degli esempi in questo articolo, viene allegato il codice all'eventoClick dell'oggetto CommandButton .

Controlli Label

I controlli Label vengono principalmente utilizzati per descrivere altri controlli in un form utente. Un controllo Label non può essere modificato dall'utente durante l'esecuzione dell'oggetto UserForm. Utilizzare la proprietà Caption per impostare o restituire il testo in un controllo Label . Altre proprietà utilizzate per la formattazione di un controllo Label includono la proprietà Font e la proprietà ForeColor .

Come utilizzare l'istruzione WITH per formattare un controllo Label

Per utilizzare l'istruzione WITH per modificare le proprietà di un controllo Label , attenersi alla seguente procedura:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  3. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  4. Aggiungere un controllo Label al form utente.
  5. Aggiungere un controllo CommandButton al form utente.
  6. Fare doppio clic la toopen di controllo CommandButton finestra del codice per UserForm.
  7. Nella finestra del codice, digitare il seguente codice per l'evento Clic su CommandButton1 :
    Private Sub CommandButton1_Click()    With Label1        ' Set the text of the label.        .Caption = "This is Label Example 1"        ' Automatically size the label control.        .AutoSize = True        .WordWrap = False        ' Set the font used by the Label control.        .Font.Name = "Times New Roman"        .Font.Size = 14        .Font.Bold = True        ' Set the font color to blue.        .ForeColor = RGB(0, 0, 255)    End WithEnd Sub
  8. Scegliere RunSub/UserFormdal menu Esegui .
  9. Fare clic sul pulsante di comando.
Il testo "This is esempio etichetta 1" viene visualizzato sul controllo etichetta in grassetto Times New Roman con una dimensione di 14 punti.

Controlli TextBox

Controlli TextBox vengono spesso utilizzati per raccogliere l'input dell'utente. La proprietà Text contiene il movimento viene effettuato un controllo TextBox .

Come utilizzare un controllo TextBox per convalidare una password

Se si imposta la proprietà PasswordChar di un controllo TextBox , diventa un controllo "mascherati-modifica". Ogni carattere digitato nel controllo TextBox viene sostituito visivamente il carattere specificato. Per utilizzare un controllo TextBox per convalidare una password, attenersi alla seguente procedura:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  3. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  4. Aggiungere un controllo TextBox al form utente.
  5. Dal menu Visualizza , scegliereproprietà per rendere visibile la finestra Proprietà.
  6. Nella proprietà PasswordChar del controllo TextBox , digitare *.

    Nota Si sta modificando il valore su un asterisco.
  7. Aggiungere un controllo CommandButton al form utente.
  8. Fare doppio clic la toopen di controllo CommandButton finestra del codice per UserForm.
  9. Nella finestra del codice, digitare il seguente codice per l'evento Clic su CommandButton1 :
    Private Sub CommandButton1_Click()    If TextBox1.Text <> "userform" Then        MsgBox "Password is Incorrect. Please reenter."        TextBox1.Text = ""        TextBox1.SetFocus    Else        MsgBox "Welcome!"        Unload Me    End IfEnd Sub
  10. Scegliere RunSub/UserFormdal menu Esegui .
  11. Digitare la password UserForm nel controllo TextBox .
  12. Fare clic su controllo CommandButton.
Per questo esempio, la password è "Form". Se si digita una password non corretta, viene visualizzato un messaggio che informa che la password è errata, il controllo TextBox viene cancellato e ridigitare la password. Quando si digita la password corretta, viene visualizzato un messaggio di benvenuto e viene chiuso il form utente.

Per ulteriori informazioni, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:
213555 XL2000: Nessuna proprietà di convalida dei dati per UserForm TextBoxes

Controlli CommandButton

Per avviare una procedura VBA, è possibile utilizzare un controllo CommandButton . La routine VBA è in genere associata all'evento Click del controllo CommandButton . Per utilizzare un controllo pulsante di comando che esegue una routine quando si verifica l'evento Click , attenersi alla seguente procedura:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  3. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  4. Aggiungere un controllo CommandButton al form utente.
  5. Fare doppio clic la todisplay di controllo CommandButton finestra del codice per UserForm.
  6. Nella finestra del codice, digitare il seguente codice:
    Private Sub CommandButton1_Click()    red = Int(Rnd * 255)    green = Int(Rnd * 255)    blue = Int(Rnd * 255)    CommandButton1.BackColor = RGB(red, green, blue)End Sub 
  7. Scegliere RunSub/UserFormdal menu Esegui .
Il colore di sfondo del controllo CommandButton1 cambia ogni volta che si fa clic sopra.

Per ulteriori informazioni sul controllo pulsante di comando, fare clic sui numeri per visualizzare gli articoli della Microsoft Knowledge Base riportato di seguito:
213572 XL2000: Facendo clic su pulsante di annullamento non può chiudere UserForm
213743 XL2000: Come impostare il pulsante di comando predefinito per un oggetto UserForm

Controlli ListBox

Lo scopo del controllo ListBox è presentare all'utente un elenco di elementi selezionabili. È possibile memorizzare l'elenco di elementi di un controllo ListBox in un foglio di lavoro di Excel. Per popolare un controllo ListBox con un intervallo di celle in un foglio di lavoro, utilizzare la proprietà RowSource . Quando si utilizza la proprietà MultiSelect , è possibile impostare un controllo ListBox per accettare le selezioni multiple.

Come ottenere l'elemento attualmente selezionato dal controllo ListBox

Utilizzare la proprietà Value di un controllo ListBox per restituire l'elemento attualmente selezionato. Per restituire l'elemento selezionato in una controllo ListBox di selezione singola, attenersi alla seguente procedura:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. Nelle celle a1: a5 di Sheet1, digitare i valori che si desidera utilizzare per popolare il controllo ListBox .
  3. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  4. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  5. Aggiungere un controllo ListBox al form utente.
  6. Fare doppio clic la todisplay di controllo ListBox la finestra del codice per il controllo ListBox .
  7. Nella finestra del codice, digitare il seguente codice per l'evento Click di ListBox1 :
    Private Sub ListBox1_Click()    MsgBox ListBox1.ValueEnd Sub 
  8. Scegliere RunSub/UserFormdal menu Esegui .
Quando si fa clic su un elemento nell'elenco, verrà visualizzato un messaggio con l'elemento attualmente selezionato.

Come ottenere gli elementi selezionati in un controllo ListBox di selezionare più

Per determinare gli elementi selezionati in una controllo ListBox di selezione multipla, è necessario scorrere tutti gli elementi nell'elenco e quindi eseguire una query la proprietà Selected . Per restituire gli elementi attualmente selezionati in una controllo ListBox di selezione multipla, procedere come segue:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. Nelle celle a1: a5 di Sheet1, digitare i valori che si desidera utilizzare per popolare il controllo ListBox .
  3. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  4. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  5. Aggiungere un controllo ListBox al form utente.
  6. Dal menu Visualizza , scegliereproprietà per visualizzare la finestra Proprietà.
  7. Digitare i valori indicati per le seguenti proprietà del controllo ListBox :
       Property	   Value   -----------     -----------------------   MultiSelect	   1 - frmMultiSelectMulti   RowSource	   Sheet1!A1:A8
  8. Aggiungere un controllo CommandButton al form utente.
  9. Fare doppio clic la todisplay di controllo CommandButton finestra del codice per UserForm.
  10. Nella finestra del codice, digitare il seguente codice per l'evento Clic su CommandButton1 :
    Sub CommandButton1_Click ()       ' Loop through the items in the ListBox.       For x = 0 to ListBox1.ListCount - 1          ' If the item is selected...          If ListBox1.Selected(x) = True Then             ' display the Selected item.             MsgBox ListBox1.List(x)          End If       Next x    End Sub 
  11. Scegliere RunSub/UserFormdal menu Esegui .
  12. Selezionare uno o più elementi nell'elenco.
  13. Fare clic su CommandButton1.
Dopo che si fa clic su CommandButton1, tutti gli elementi selezionati nel controllo ListBox viene visualizzato in una finestra separata. Dopo che tutti gli elementi selezionati vengono visualizzati in una finestra di messaggio, il form viene chiuso automaticamente.

Come utilizzare la proprietà RowSource per popolare un controllo ListBox con le celle in un foglio di lavoro

Per utilizzare la proprietà RowSource per popolare un controllo ListBox da un intervallo di celle in un foglio di lavoro, attenersi alla seguente procedura:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. Nelle celle a1: a5 di Sheet1, digitare i valori che si desidera utilizzare per popolare il controllo ListBox .
  3. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  4. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  5. Aggiungere un controllo ListBox al form utente.
  6. Aggiungere un controllo CommandButton al form utente.
  7. Fare doppio clic la todisplay di controllo CommandButton finestra del codice per UserForm.
  8. Nella finestra del codice, digitare il seguente codice per l'evento Clic su CommandButton1 :
    Private Sub CommandButton1_Click()    ListBox1.RowSource = "=Sheet1!A1:A5"End Sub 
  9. Scegliere RunSub/UserFormdal menu Esegui .

    Nota ListBox1 non contiene alcun valore.
  10. Fare clic su CommandButton1.
ListBox1 viene popolato con i valori nell'intervallo a1: a5 celle di Sheet1.

Come popolare un controllo ListBox con i valori in una matrice

In questo esempio viene illustrato come compilare un controllo ListBox con una variabile di matrice. È necessario assegnare i valori della matrice all'elemento di un controllo ListBox alla volta. In genere, questo processo è necessario utilizzare una struttura di ciclo, ad esempio un per... Successivo ciclo. Per popolare un controllo ListBox con una variabile di matrice, attenersi alla seguente procedura:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  3. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  4. Aggiungere un controllo ListBox al form utente.
  5. Dal menu Inserisci , fare clic sumodulo per inserire un modulo.
  6. Nella finestra del codice, digitare il seguente codice:
    Sub PopulateListBox()    Dim MyArray As Variant    Dim Ctr As Integer    MyArray = Array("Apples", "Oranges", "Peaches", "Bananas", "Pineapples")        For Ctr = LBound(MyArray) To UBound(MyArray)        UserForm1.ListBox1.AddItem MyArray(Ctr)    Next        UserForm1.ShowEnd Sub 
  7. Dal menu Strumenti , fare clic sumacro, fare clic su PopulateListBoxe quindi fare clic suEsegui.
La procedura PopulateListBox compila una semplice matrice e aggiunge gli elementi della matrice al controllo ListBox utilizzando il metodo AddItem . Quindi, viene visualizzata la UserForm.

Come utilizzare un intervallo orizzontale di celle in un foglio di lavoro per popolare un controllo ListBox

Se si imposta la proprietà RowSource di un controllo ListBox a un intervallo orizzontale di celle, verrà visualizzato solo il primo valore nel controllo ListBox .

Per popolare un controllo ListBox da un intervallo orizzontale di celle utilizzando il metodo AddItem , attenersi alla seguente procedura:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. Nelle celle a1: E1 Sheet1, digitare i valori che si desidera utilizzare per popolare il controllo ListBox .
  3. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  4. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  5. Aggiungere un controllo ListBox al form utente.
  6. Dal menu Inserisci , fare clic sumodulo per inserire un modulo.
  7. Nella finestra del codice, digitare il seguente codice:
    Sub PopulateListWithHorizontalRange()    For Each x In Sheet1.Range("A1:E1")        UserForm1.ListBox1.AddItem x.Value    Next        UserForm1.ShowEnd Sub
  8. Dal menu Strumenti , fare clic sumacro, fare clic suPopulateListWithHorizontalRangee quindi fare clic suEsegui.
La procedura di macro consente di scorrere le celle a1: E5 di Sheet1, aggiungendo i valori a ListBox1 uno alla volta.

Nota ListBox1 non è associato a celle a1: E5 Sheet1.

Come restituire più valori da un controllo ListBox associato a più colonne di dati

È possibile formattare i controlli ListBox per visualizzare più di una colonna di dati. Ciò significa che il controllo ListBox viene visualizzato più di un elemento in ogni riga dell'elenco. Per restituire più valori dall'elemento selezionato nell'elenco, attenersi alla seguente procedura:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. Digitare i seguenti dati nelle celle che sono onSheet1 indicato:

    A1: annoB1: regioneC1: vendite
    A2: 1996 B2: NordC2: 140
    A3: 1996B3: sudC3: 210
    A4: 1997B4: NordC4: 190
    A5: 1997B5: sudC5: 195
  3. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  4. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  5. Aggiungere un controllo Label al form utente.
  6. Aggiungere un controllo ListBox al form utente.
  7. Pulsante destro del mouse la casella di riepilogoe quindi scegliereproprietà.
  8. Digitare o selezionare i valori indicati per le proprietà thefollowing del controllo ListBox , come elencato nella tabella riportata di seguito:
       Property       Value   ----------------------------   BoundColumn     1   ColumnCount     3   ColumnHeads     True   RowSource       Sheet1!A2:A5
  9. Fare doppio clic la todisplay di controllo ListBox la finestra del codice per il controllo ListBox .
  10. Nella finestra del codice, digitare il seguente codice:
    Private Sub ListBox1_Change()    Dim SourceData As Range    Dim Val1 As String, Val2 As String, Val3 As String        Set SourceRange = Range(ListBox1.RowSource)        Val1 = ListBox1.Value    Val2 = SourceRange.Offset(ListBox1.ListIndex, 1).Resize(1, 1).Value    Val3 = SourceRange.Offset(ListBox1.ListIndex, 2).Resize(1, 1).Value        Label1.Caption = Val1 & " " & Val2 & " " & Val3End Sub
  11. Scegliere RunSub/UserFormdal menu Esegui .
Quando si fa clic su una voce nel controllo ListBox , l'etichetta modificata per visualizzare tutte e tre gli elementi in quella voce.

Come rimuovere tutti gli elementi da un controllo ListBox associato a un foglio di lavoro

Per rimuovere tutti gli elementi da un controllo ListBox associato a un foglio di lavoro, cancellare il valore memorizzato nella proprietà RowSource . Per rimuovere elementi da un controllo ListBox associato a un foglio di lavoro, attenersi alla seguente procedura:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. Nelle celle a1: a5 di Sheet1, digitare i valori che si desidera utilizzare per popolare il controllo ListBox .
  3. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  4. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  5. Aggiungere un controllo ListBox al form utente.
  6. Pulsante destro del mouse il controllo ListBox e quindi fai clic su proprietà.
  7. Nella proprietà RowSource , digitare Foglio1! A1: A5.
  8. Aggiungere un controllo CommandButton al form utente.
  9. Fare doppio clic la todisplay di controllo CommandButton finestra del codice per il controllo CommandButton .
  10. Nella finestra del codice, digitare il seguente codice per l'evento Clic su CommandButton1 :
    Private Sub CommandButton1_Click()    ListBox1.RowSource = ""End Sub
  11. Scegliere RunSub/UserFormdal menu Esegui .

    Il controllo ListBoxche è stato aggiunto al form utente viene popolato con thevalues che è stato immesso in Sheet1.
  12. Fare clic su CommandButton1.
Tutti gli elementi vengono rimossi da ListBox1.

Come rimuovere tutti gli elementi da un controllo ListBox che non è associato a un foglio di lavoro

Comando non è disponibile solo VBA che rimuove tutti gli elementi da un controllo ListBox , se l'elenco non è associato a un foglio di lavoro. Per rimuovere tutti gli elementi da un controllo ListBox viene popolato da una matrice di Visual Basic, attenersi alla seguente procedura:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  3. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  4. Aggiungere un controllo ListBox al form utente.
  5. Dal menu Inserisci , fare clic sumodulo per inserire un modulo.
  6. Nella finestra del codice, digitare il seguente codice:
    Sub PopulateListBox()    Dim MyArray As Variant    Dim Ctr As Integer    MyArray = Array("Apples", "Oranges", "Peaches", "Bananas", "Pineapples")        For Ctr = LBound(MyArray) To UBound(MyArray)        UserForm1.ListBox1.AddItem MyArray(Ctr)    Next        UserForm1.ShowEnd Sub 
  7. Aggiungere un controllo CommandButton al form utente.
  8. Fare doppio clic la todisplay di controllo CommandButton finestra del codice per il controllo CommandButton .
  9. Nella finestra del codice, digitare il seguente codice per l'evento Clic su CommandButton1 :
    Private Sub CommandButton1_Click()    For i = 1 To ListBox1.ListCount        ListBox1.RemoveItem 0    Next IEnd Sub
  10. Dal menu Strumenti , fare clic sumacro, fare clic su PopulateListBoxe quindi fare clic suEsegui.

    Il controllo ListBox viene compilato e viene quindi visualizzato il form utente.
  11. Fare clic su CommandButton1.
Tutti gli elementi vengono rimossi da ListBox1.

Per ulteriori informazioni sul controllo casella di riepilogo, fare clic sui numeri per visualizzare gli articoli della Microsoft Knowledge Base riportato di seguito:
161598 OFF: Come aggiungere dati a un controllo ComboBox o ListBox in Excel o Word
211446 XL2000: Proprietà TextColumn Visualizza solo la prima colonna
211896 XL2000: Come simulare combinazione di controllo di elenco per UserForm
211899 XL2000: Problemi impostando le intestazioni di colonna nel controllo ListBox
213721 XL2000: Come rimuovere tutti gli elementi da un controllo ListBox o ComboBox
213722 XL2000: Come utilizzare la proprietà TextColumn
213723 XL2000: Come valori restituiti da una casella di riepilogo che visualizza più colonne
213746 XL2000: Come compilare il controllo casella di riepilogo con più intervalli
213748 XL2000: Come popolare una casella di riepilogo in base a un'altra casella di riepilogo
213752 XL2000: Utilizzando il metodo AddItem causa un errore quando RowSource è associato ai dati
213756 XL2000: Utilizzando il metodo RemoveItem con controllo ListBox o ComboBox
213759 XL2000: Come determinare gli elementi selezionati in una casella di riepilogo

Controlli ComboBox

È possibile utilizzare il controllo ComboBox come una casella di riepilogo a discesa o una casella combinata in cui è possibile selezionare un valore in un elenco o digitare un nuovo valore. La proprietà Style determina se il controllo ComboBox agisce come una casella di riepilogo a discesa o una casella combinata.

Nota Tutti gli esempi nella sezione precedente per il controllo ListBox è applicabile anche al controllo ComboBox , fatta eccezione per l'esempio di "Come ottenere gli elementi selezionati in un controllo ListBox di selezione multipla".

Come aggiungere un nuovo elemento all'elenco se il controllo ComboBox non è associato a un foglio di lavoro

Quando si digita un valore che non si trova già nell'elenco nel controllo ComboBox , si desidera aggiungere il nuovo valore nell'elenco. Per aggiungere il nuovo valore immesso nel controllo ComboBox , se il controllo ComboBox non è associato al foglio di lavoro, attenersi alla seguente procedura:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  3. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  4. Aggiungere un controllo ComboBox al form utente.
  5. Dal menu Inserisci , fare clic sumodulo per inserire un modulo.
  6. Nella finestra del codice, digitare il seguente codice:
    Sub PopulateComboBox()     Dim MyArray As Variant     Dim Ctr As Integer     MyArray = Array("Apples", "Oranges", "Peaches", "Bananas", "Pineapples")         For Ctr = LBound(MyArray) To Ubound(MyArray)         UserForm1.ComboBox1.AddItem MyArray(Ctr)     Next         UserForm1.Show End Sub
  7. Aggiungere un controllo CommandButton al form utente.
  8. Fare doppio clic la todisplay di controllo CommandButton finestra del codice per il controllo CommandButton .
  9. Nella finestra del codice, digitare il seguente codice per l'evento Clic su CommandButton1 :
    Private Sub CommandButton1_Click()     Dim listvar As Variant          listvar = ComboBox1.List         On Error Resume Next     ' If the item is not found in the list...     If IsError(WorksheetFunction.Match(ComboBox1.Value, listvar, 0)) Then         ' add the new value to the list.         ComboBox1.AddItem ComboBox1.Value     End If End Sub
  10. Dal menu Strumenti , fare clic sumacro, fare clic su PopulateListBoxe quindi fare clic suEsegui.

    Il controllo ComboBox viene compilato e viene quindi visualizzato il form utente.
  11. Nel controllo ComboBox , digitare Manghi o qualsiasi valore che viene non già incluso nell'elenco.
  12. Fare clic su CommandButton1.
Il nuovo valore digitato ora appare alla fine dell'elenco.

Come aggiungere un nuovo elemento all'elenco se il controllo casella combinata è associato a un foglio di lavoro

Quando un utente digita un valore che non si trova già nell'elenco nel controllo ComboBox , si desidera aggiungere il nuovo valore nell'elenco. Per aggiungere il nuovo valore immesso nel controllo ComboBox all'elenco, attenersi alla seguente procedura:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. Nelle celle a1: a5 di Sheet1, digitare i valori che si desidera utilizzare per popolare il controllo ComboBox .
  3. Seleziona celle a1: a5 di Sheet1.
  4. Dal menu Inserisci , scegliere ilnomee quindi fare clic su Definisci.

    Nella casellanomi nella cartella di lavoro , digitare ListRange , quindi fare clic su OK. Questo crea il nome definito ListRange. È possibile utilizzare il nome definito ListRange per associare la proprietà RowSource del controllo ComboBox al foglio di lavoro.
  5. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  6. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  7. Aggiungere un controllo ComboBox al form utente.
  8. Nella proprietàComboBox1, digitare Foglio1! ListRange la proprietàRowSource .
  9. Aggiungere un controllo CommandButton al form utente.
  10. Fare doppio clic la todisplay di controllo CommandButton finestra del codice per il controllo CommandButton .
  11. Nella finestra del codice, digitare il seguente codice per l'evento Clic su CommandButton1 :
    Private Sub CommandButton1_Click()    Dim SourceData As Range    Dim found As Object        Set SourceData = Range("ListRange")    Set found = Nothing    ' Try to find the value on the worksheet.    Set found = SourceData.Find(ComboBox1.Value)        ' If the item is not found in the list...    If found Is Nothing Then        ' redefine ListRange.        SourceData.Resize(SourceData.Rows.Count + 1, 1).Name = "ListRange"        ' Add the new item to the end of the list on the worksheet.        SourceData.Offset(SourceData.Rows.Count, 0).Resize(1, 1).Value _         = ComboBox1.Value        ' Reset the list displayed in the ComboBox.        ComboBox1.RowSource = Range("listrange").Address(external:=True)    End IfEnd Sub
  12. Scegliere RunSub/UserFormdal menu Esegui .

    Il form viene visualizzato Sheet1.
  13. Nel controllo ComboBox , digitare un valore che non si trova già nell'elenco.
  14. Fare clic su CommandButton1.
Il nuovo elemento che è stato digitato nel controllo ComboBox viene aggiunto all'elenco e l'elenco associato al controllo ComboBox viene espanso per includere a1: a6 celle.

Come visualizzare l'elenco di un controllo ComboBox quando viene visualizzato il form utente

In alcuni casi, può essere utile visualizzare l'elenco di un controllo ComboBox quando viene visualizzato un form utente. Nell'esempio seguente viene utilizzato l'evento Activate della UserForm. Per visualizzare l'elenco di un controllo ComboBox , attenersi alla seguente procedura:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. Nelle celle a1: a5 di Sheet1, digitare i valori che si desidera utilizzare per popolare il controllo ComboBox .
  3. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  4. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  5. Aggiungere un controllo ComboBox al form utente.
  6. Nella proprietàComboBox1, digitare Foglio1! A1: A5 la proprietàRowSource .
  7. Fare doppio clic sul Form per visualizzare visualizzare finestra per UserForm.
  8. Nella finestra del codice, digitare il seguente codice per l'evento CommandButton Click :
    Private Sub UserForm_Activate()           ComboBox1.DropDown       End Sub
  9. Scegliere RunSub/UserFormdal menu Esegui .
Il form viene visualizzato Sheet1 ed è possibile visualizzare la lista ComboBox1.

Come visualizzare l'elenco di un controllo ComboBox, quando si effettua una selezione in un altro controllo ComboBox

Per visualizzare l'elenco di un controllo ComboBox automaticamente quando viene effettuata una scelta in un altro controllo ComboBox , attenersi alla seguente procedura:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. Nelle celle a1: a10 di Sheet1, digitare i valori che si desidera utilizzare per popolare il controllo ComboBox .
  3. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  4. Sceglieremodulodal menu Inserisci .
  5. Nella finestra del codice per il modulo, digitare il seguente codice:
    Sub DropDown_ComboBox()    UserForm1.ComboBox2.DropDownEnd Sub
  6. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  7. Aggiungere un controllo ComboBox al form utente.
  8. Nella proprietàComboBox1, digitare Foglio1! A1: A5 la proprietàRowSource .
  9. Fare doppio clic sul controllo ComboBox nella finestra del codice aprire per il controllo ComboBox .
  10. Nella finestra del codice per il controllo ComboBox , digitare il seguente codice per l'evento Click di ComboBox :
    Private Sub ComboBox1_Click()    Application.OnTime Now, "DropDown_ComboBox"End Sub
  11. Aggiungere un secondo controllo ComboBox al form utente.
  12. Nella proprietàComboBox2, digitare Foglio1! A6:A10 la proprietàRowSource .
  13. Scegliere RunSub/UserFormdal menu Esegui .
Quando si fa clic su un elemento nell'elenco ComboBox1 , verrà visualizzato automaticamente nell'elenco per ComboBox2 .

Per ulteriori informazioni sul controllo casella combinata, fare clic sui numeri per visualizzare gli articoli della Microsoft Knowledge Base riportato di seguito:
161598 OFF: Come aggiungere dati a un controllo ComboBox o ListBox in Excel o Word
211446 XL2000: Proprietà TextColumn Visualizza solo la prima colonna
211899 XL2000: Problemi impostando le intestazioni di colonna nel controllo ListBox
213717 XL2000: Errore di Run-time utilizzando il metodo DropDown con un controllo ComboBox
213718 XL2000: Come visualizzare un elenco di controllo ComboBox quando un form viene visualizzato
213721 XL2000: Come rimuovere tutti gli elementi da un controllo ListBox o ComboBox
213722 XL2000: Come utilizzare la proprietà TextColumn
213752 XL2000: Utilizzando il metodo AddItem provoca un errore quando i dati di RowSource sia associati
213756 XL2000: Utilizzando il metodo RemoveItem con controllo ListBox o ComboBox

Controllo frame

Utilizzare un controllo Frame per raggruppare elementi correlati logicamente in un oggetto UserForm. Controlli frame vengono spesso utilizzati per raggruppare controlli OptionButton .

Come scorrere tutti i controlli di un controllo Frame

Per utilizzare un per ogni... Successivo ciclo per accedere a tutti i controlli in un controllo Frame , attenersi alla seguente procedura:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  3. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  4. Aggiungere un controllo Frame allo UserForm.
  5. Aggiungere un controllo OptionButton per il controllo Frame .

    Ripetere questo passaggio per aggiungere altri due controlli OptionButton del controllo Frame .
  6. Fare doppio clic sul controllo Frame per aprire la finestra di visualizzare per il controllo Frame .
  7. Nella finestra del codice, digitare il seguente codice per l'evento Click di Frame :
    Private Sub Frame1_Click()    Dim Ctrl As Control        For Each Ctrl In Frame1.Controls        Ctrl.Enabled = Not Ctrl.Enabled    NextEnd Sub
  8. Scegliere RunSub/UserFormdal menu Esegui .
  9. Nell'oggetto UserForm, scegliere il controllo Frame.
La prima volta che si sceglie il controllo Frame , tutti i controlli del controllo Frame non sono disponibili. Se si sceglie nuovamente il controllo Frame , i controlli saranno nuovamente disponibili.

Controllo OptionButton

È possibile utilizzare i gruppi di controlli OptionButton per effettuare una selezione tra un gruppo di opzioni. È possibile utilizzare una delle seguenti tecniche per raggruppare i controlli OptionButton :
  • Controllo frame
  • Proprietà GroupName
Nota Il valore True , il valore e il valore di indicare che un controllo OptionButton è selezionata. Il valore Off , il valore di No e il valore False indica che un controllo OptionButton non sia selezionata.

Come determinare il controllo OptionButton selezionato quando i controlli OptionButton sono in un controllo Frame

Quando si raggruppano controlli pulsanti di opzione utilizzando un controllo Frame , è possibile determinare il controllo OptionButton selezionato scorrendo in ciclo tutti i controlli del controllo Frame e controllando la proprietà Value di ciascun controllo. Per determinare il controllo OptionButton è selezionato, procedere come segue:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  3. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  4. Aggiungere un controllo Frame allo UserForm.
  5. Aggiungere un controllo OptionButton per il controllo Frame .

    Ripetere questo passaggio per aggiungere altri due controlli OptionButton del controllo Frame .
  6. Aggiungere un controllo CommandButton in UserForm all'esterno del controllo Frame .
  7. Fare doppio clic la todisplay di controllo CommandButton finestra del codice per UserForm.
  8. Nella finestra del codice, digitare il seguente codice per l'evento Clic su CommandButton1 :
    Private Sub CommandButton1_Click()     For Each x In Frame1.Controls         If x.Value = True Then             MsgBox x.Caption         End If     Next End Sub
  9. Scegliere RunSub/UserFormdal menu Esegui .
  10. Fare clic su un controllo OptionButton di UserForme quindi fare clic suCommandButton1.
Verrà visualizzato un messaggio che contiene la didascalia del controllo OptionButton attualmente selezionato.

Come determinare il controllo OptionButton selezionato

Lo scopo dell'esempio seguente è per determinare il controllo OptionButton selezionato in Group1. Per creare un form che dispone di due gruppi di controlli OptionButton , attenersi alla seguente procedura:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  3. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  4. Aggiungere un controllo Frame allo UserForm.
  5. Aggiungere un controllo OptionButton del controllo Frame .

    Ripetere questo passaggio per aggiungere altri due controlli OptionButton del controllo Frame .
  6. Per ogni controllo OptionButton , digitare Group1 nella proprietà GroupName .
  7. Ripetere i passaggi 4 e 5 per creare un secondo controllo Frame che contiene tre controlli OptionButton .
  8. Per ogni controllo OptionButton nel secondo controllo Frame , digitare Gruppo2 nella proprietà GroupName .
  9. Aggiungere un controllo CommandButton in UserForm all'esterno dei controlli Frame .
  10. Fare doppio clic la todisplay di controllo CommandButton finestra del codice per UserForm.
  11. Nella finestra del codice, digitare il seguente codice per l'evento Clic su CommandButton1 :
    Private Sub CommandButton1_Click()     Dim x As Control          ' Loop through ALL the controls on the UserForm.     For Each x In Me.Controls         ' Check to see if "Option" is in the Name of each control.         If InStr(x.Name, "Option") Then             ' Check Group name.             If x.GroupName = "Group1" Then                 ' Check the status of the OptionButton.                 If x.Value = True Then                     MsgBox x.Caption                     Exit For                 End If             End If         End If     Next End Sub
  12. Scegliere RunSub/UserFormdal menu Esegui .
  13. Fare clic su un controllo OptionButton di Gruppo1 in UserForm e quindi fare clic suCommandButton1.
Verrà visualizzato un messaggio che contiene la didascalia del controllo OptionButton attualmente selezionato.

Per ulteriori informazioni sui controlli OptionButton, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:
213724 XL2000: Problemi utilizzando la proprietà TripleState per pulsante di opzione

Controllo CheckBox

È possibile utilizzare una casella di controllo per indicare un valore true o false. Una casella di controllo che viene visualizzato un segno di spunta, indica il valore True. Una casella di controllo che viene visualizzato con alcun segno di spunta indica il valore False. Se il valore della proprietà TripleState è True, una casella di controllo può anche avere un valore Null. Un controllo casella di controllo che ha un valore non Null sembra non essere disponibile.

Nota Il valore su , il valore e il valore True indica che un controllo casella di controllo è selezionato. Il valore Off , il valore di No e il valore False indica che un controllo casella di controllo è deselezionato.

Come controllare il valore di un controllo casella di controllo

Per utilizzare la proprietà Value per restituire il valore corrente di un controllo casella di controllo , attenersi alla seguente procedura:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  3. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  4. Aggiungere un controllo casella di controllo al form utente.
  5. Nell'elenco proprietà di CheckBox1, selezionare True la proprietà TripleState .
  6. Fare doppio clic su todisplay di controllo la casella di controllo la finestra del codice per il controllo CheckBox .
  7. Nella finestra del codice, digitare il seguente codice per l'evento Change CheckBox1 :
    Private Sub CheckBox1_Change()    Select Case CheckBox1.Value        Case True            CheckBox1.Caption = "True"        Case False            CheckBox1.Caption = "False"        Case Else            CheckBox1.Caption = "Null"    End SelectEnd Sub
  8. Scegliere RunSub/UserFormdal menu Esegui .
Quando si sceglie il controllo casella di controllo , la didascalia del controllo casella di controllo cambia per riflettere il valore corrente.

Controllo ToggleButton

Un controllo ToggleButton ha lo stesso aspetto di un controllo CommandButton fino a quando non si fa clic su esso. Quando si fa clic su un controllo ToggleButton , sembra essere premuto o spostate verso il basso. La proprietà Value di un controllo ToggleButton è True quando il pulsante è selezionato e False quando il pulsante non è selezionato. Se il valore della proprietà TripleState è True, un controllo ToggleButton può anche avere un valore Null. Un controllo ToggleButton che ha un valore non Null sembra non essere disponibile.

Nota Il valore su , il valore e il valore True indica che viene selezionato un controllo ToggleButton . Il valore Off , il valore di No e il valore False indica che un controllo ToggleButton non sia selezionato.

Come ottenere il valore di un controllo ToggleButton

Per ottenere il valore di un controllo ToggleButton , attenersi alla seguente procedura:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  3. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  4. Aggiungere un controllo ToggleButton in UserForm.
  5. Aggiungere un controllo Label al form utente.
  6. Fare doppio clic la toopen di controllo ToggleButton finestra del codice per il controllo ToggleButton .
  7. Nella finestra del codice, digitare il seguente codice per l'evento ToggleButton1Click :
    Private Sub ToggleButton1_Click()    If ToggleButton1.Value = True Then        ' Set UserForm background to Red.        Me.BackColor = RGB(255, 0, 0)    Else        ' Set UserForm background to Blue.        Me.BackColor = RGB(0, 0, 255)    End IfEnd Sub
  8. Scegliere RunSub/UserFormdal menu Esegui .
Quando si fa clic su controllo ToggleButton , il colore di sfondo delle modifiche UserForm.

Come creare un gruppo di controlli ToggleButton si escludono a vicenda

In questo esempio viene utilizzato l'evento MouseUp per impostare una variabile e chiama la routine ExclusiveToggleButtons . La procedura ExclusiveToggleButtons determina l'interruttore selezionato e quindi Annulla gli altri . Per creare un gruppo di controlli ToggleButton si escludono a vicenda, attenersi alla seguente procedura:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  3. Sceglieremodulodal menu Inserisci .
  4. Nella finestra del codice per il modulo, digitare il seguente codice:
    ' Variable that holds the name of the ToggleButton that was clicked.Public clicked As StringSub ExclusiveToggleButtons()   Dim toggle As Control   ' Loop through all the ToggleButtons on Frame1.   For Each toggle In UserForm1.Frame1.Controls       ' If Name of ToggleButton matches name of ToggleButton       ' that was clicked...       If toggle.Name = clicked Then          '...select the button.          toggle.Value = True       Else          '...otherwise clear the selection of the button.          toggle.Value = False       End If    NextEnd Sub
  5. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  6. Aggiungere un controllo Frame allo UserForm.
  7. Aggiungere un controllo ToggleButton del controllo Frame .

    Ripetere questo passaggio per aggiungere altri due controlli ToggleButton del controllo Frame .
  8. Fare doppio clic nella cornice nella finestra del codice Filtra per UserForm.
  9. Nella finestra del codice per il modulo, digitare il seguente evento ToggleButton MouseUp di codefor:
    Private Sub ToggleButton1_MouseUp(ByVal Button As Integer, _              ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)       clicked = ToggleButton1.Name       Application.OnTime Now, "ExclusiveToggleButtons"    End Sub    Private Sub ToggleButton2_MouseUp(ByVal Button As Integer, _              ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)        clicked = ToggleButton2.Name        Application.OnTime Now, "ExclusiveToggleButtons"    End Sub    Private Sub ToggleButton3_MouseUp(ByVal Button As Integer, _              ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)        clicked = ToggleButton3.Name        Application.OnTime Now, "ExclusiveToggleButtons"    End Sub
  10. Scegliere RunSub/UserFormdal menu Esegui .
Quando si fa clic su un controllo ToggleButton , l'interruttore selezionato in precedenza è stata annullata.

Controllo TabStrip

Per visualizzare diversi set di informazioni per un insieme di controlli, utilizzare un controllo TabStrip .

Come controllare a livello di codice un controllo TabStrip

Per modificare la proprietà BackColor di un controllo immagine in base alla scheda selezionata, attenersi alla seguente procedura:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual Basic Editor.
  3. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  4. Aggiungere un controllo TabStrip allo UserForm.
  5. Aggiungere un controllo Image che copre la base del controllo TabStrip , ma che non comprende le schede.
  6. Nel riquadro delle proprietà per Image1, digitare& H000000FF & nella proprietà BackColor .
  7. Fare doppio clic sul controllo TabStrip nella finestra del codice aprire per il controllo TabStrip .
  8. Nella finestra del codice, digitare il seguente codice per l'evento Change TabStrip1 :
    Private Sub TabStrip1_Change()    Dim i As Integer    i = TabStrip1.SelectedItem.Index    Select Case i        Case 0            ' If Tab1 is selected, change the color of Image control to Red.            Image1.BackColor = RGB(255, 0, 0)        Case 1            ' If Tab2 is selected, change the color of Image control to Green.            Image1.BackColor = RGB(0, 255, 0)    End SelectEnd Sub
  9. Scegliere RunSub/UserFormdal menu Esegui .
Il colore del controllo immagine cambia in base alla pagina del controllo TabStrip è attivo.

Per ulteriori informazioni sul controllo TabStrip, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:
213254 XL2000: Come utilizzare il controllo TabStrip in un UserForm

Controllo multiPage

Utilizzare un controllo MultiPage per lavorare con molte informazioni che possono essere ordinate in diverse categorie. Un controllo MultiPage è costituito da uno o più pagina oggetti che ognuno dei quali contiene un diverso insieme di controlli. È possibile impostare a livello di codice la pagina attiva impostando la proprietà Value del controllo MultiPage .

Come controllare a livello di codice un controllo MultiPage

Per aggiungere un controllo MultiPage e controllarlo tramite una macro, attenersi alla seguente procedura:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  3. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  4. Aggiungere un controllo MultiPage allo UserForm.
  5. Aggiungere un controllo Label sul controllo MultiPage Page1.
  6. Aggiungere un controllo TextBox sul controllo MultiPage Page1.
  7. Sul controllo MultiPage , fare clic su Page2e quindi ripetere i passaggi 5and 6 per aggiungere un controllo Label e un controllo TextBox .
  8. Fare doppio clic sul controllo MultiPage nella finestra del codice per il controllo MultiPage aprire.
  9. Nella finestra del codice, digitare il seguente codice per l'evento Change MultiPage1 :
    Private Sub MultiPage1_Change()    Select Case MultiPage1.Value        ' If activating Page1...        Case 0            Label1.Caption = TextBox2.Text            TextBox1.Text = ""        ' If activating Page2...        Case 1            Label2.Caption = TextBox1.Text            TextBox2.Text = ""    End SelectEnd Sub
  10. Nella finestra del codice, digitare il seguente codice per l'evento UserForm Initialize :
    Private Sub UserForm_Initialize()    ' Force Page1 to be active when UserForm is displayed.    MultiPage1.Value = 0    Label1.Caption = ""End Sub
  11. Scegliere RunSub/UserFormdal menu Esegui .

    Nel controllo TextBox nella Pagina1, digitare Test. Quando youclick scheda Pagina2 , TextBox2 è deselezionata, e la didascalia di Label2 modifica al movimento apportate in TextBox1 nella Pagina1 ("Test").

Come creare un'interfaccia della procedura guidata utilizzando un controllo MultiPage

Quando un'attività richiede diversi passaggi incrementale, tramite un'interfaccia può essere molto efficace. È possibile utilizzare il controllo MultiPage per creare un'interfaccia guidata invece di utilizzare più oggetti UserForm. In questo esempio la modifica di un controllo MultiPage che dispone di tre pagine. Una procedura associata all'evento Initialize di UserForm Disabilita Pagina2 e Page3 e forza Pagina1 del controllo MultiPage sia attivo.

Nota Quando si indicizzano le pagine di un controllo MultiPage utilizzando l'insieme di pagine , la prima pagina nell'insieme è pagina zero. Questa procedura imposta la didascalia dei controlli CommandButton e disattiva il <> pulsante.

Nota La procedura di cui è assegnata all'evento Click del pulsante di comando1 controlla le funzionalità di <> pulsante. La procedura di cui è assegnata all'evento Click di CommandButton2 controlla le funzionalità dei successivo > pulsante. Per creare un'interfaccia della procedura guidata utilizzando un controllo MultiPage , attenersi alla seguente procedura:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  3. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  4. Aggiungere un controllo MultiPage allo UserForm.
  5. Fare clic su Page1 e quindi fare clic suNuova pagina per aggiungere il controllo MultiPage Page3.
  6. Aggiungere un controllo CommandButton in UserForm che non è su un controllo MultiPage .

    Ripetere questo passaggio per aggiungere un secondo controllo CommandButton in UserForm.
  7. Fare doppio clic per aprire la rappresentazione per UserForm UserForm .
  8. Nella finestra del codice, digitare il seguente codice per l'evento UserForm Initialize :
    Private Sub UserForm_Initialize()    With MultiPage1        ' The next 2 lines disable Page2 & Page3.        .Pages(1).Enabled = False        .Pages(2).Enabled = False        ' Make Page1 the active page.        .Value = 0    End With        ' Set the caption on the CommandButtons.    CommandButton1.Caption = "<Back"    CommandButton1.Enabled = False    CommandButton2.Caption = "Next>"End Sub' Procedure for the "<Back" buttonPrivate Sub CommandButton1_Click()    Select Case MultiPage1.Value        Case 1                                 ' If Page2 is active...            With MultiPage1                .Pages(0).Enabled = True       ' Enable Page1.                .Value = MultiPage1.Value - 1  ' Move back 1 page.                .Pages(1).Enabled = False      ' Disable Page2.            End With            CommandButton1.Enabled = False     ' Disable Back button.                    Case 2                                 ' If Page3 is active...            With MultiPage1                .Pages(1).Enabled = True       ' Enable Page2.                .Value = MultiPage1.Value - 1  ' Move back 1 page.                .Pages(2).Enabled = False      ' Disable Page3.   CommandButton2.Caption = "Next>"            End With    End SelectEnd Sub' Procedure for the "Next>" buttonPrivate Sub CommandButton2_Click()    Select Case MultiPage1.Value        Case 0                                  ' If Page1 is active...            With MultiPage1                .Value = MultiPage1.Value + 1   ' Move forward 1 page.                .Pages(1).Enabled = True        ' Enable Page2.                .Pages(0).Enabled = False       ' Disable Page1.            End With            CommandButton1.Enabled = True       ' Enable Back button.                    Case 1                                  ' If Page2 is active...            With MultiPage1                .Value = MultiPage1.Value + 1   ' Move forward 1 page.                .Pages(2).Enabled = True        ' Enable Page3.                .Pages(1).Enabled = False       ' Disable Page2.            End With            CommandButton2.Caption = "Finish"   ' Change Next button to Finish.                    Case 2                                  ' If Page3 is active...            MsgBox "Finished!"                  ' User is Finished.            Unload Me                           ' Unload the UserForm.    End SelectEnd Sub
  9. Scegliere RunSub/UserFormdal menu Esegui .
Quando fa clic su Avanti >, Pagina2 viene attivato e la <> pulsante diventa disponibile. Quando fa clic su Avanti > una seconda volta, Page3 viene attivato e la didascalia CommandButton2 verrà modificata in "Fine".

Controllo ScrollBar

È possibile utilizzare un controllo barra di scorrimento quando si desidera modificare il valore visualizzato da un altro controllo, ad esempio un controllo Label .

Come modificare un controllo Label che si basa sul valore di un controllo barra di scorrimento

Per modificare la proprietà Caption di un controllo Label all'impostazione corrente della proprietà Value di un controllo barra di scorrimento , attenersi alla seguente procedura:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  3. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  4. Aggiungere un controllo barra di scorrimento al modulo utente.
  5. Aggiungere un controllo Label al form utente.
  6. Fare doppio clic sul controllo barra di scorrimento nella finestra del codice aprire per il controllo barra di scorrimento .
  7. Nella finestra del codice, digitare il seguente codice per l'evento Change ScrollBar1 :
    Private Sub ScrollBar1_Change()    Label1.Caption = ScrollBar1.ValueEnd Sub
  8. Scegliere RunSub/UserFormdal menu Esegui .
Quando si scorre il controllo barra di scorrimento , Label1 viene aggiornato con il valore corrente del controllo barra di scorrimento .

Controllo SpinButton

Un controllo SpinButton , come un controllo barra di scorrimento , viene spesso utilizzato per incrementare o decrementare il valore di un altro controllo, ad esempio un controllo Label . La proprietà SmallChange determina quanto il valore di un controllo SpinButton cambia quando viene scelto.

Come aggiungere un controllo SpinButton che incrementa o decrementa di una data che viene memorizzato in un controllo TextBox

Per aggiungere un controllo SpinButton che incrementa o decrementa di una data che viene memorizzato in un controllo TextBox , attenersi alla seguente procedura:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  3. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  4. Aggiungere un controllo SpinButton allo UserForm.
  5. Aggiungere un controllo TextBox al form utente.
  6. Fare doppio clic la toopen di controllo SpinButton finestra del codice per il controllo SpinButton .
  7. Nella finestra del codice, digitare il seguente codice per l'evento SpinUp SpinButton1 :
    Private Sub SpinButton1_SpinUp()    TextBox1.Text = DateValue(TextBox1.Text) + 1End Sub
  8. Nella finestra del codice, digitare il seguente codice per l'evento SpinDown SpinButton1 :
    Private Sub SpinButton1_SpinDown()    TextBox1.Text = DateValue(TextBox1.Text) - 1End Sub
  9. Nella finestra del codice, digitare il seguente codice per l'evento UserForm Initialize :
    Private Sub UserForm_Initialize()    TextBox1.Text = DateEnd Sub
  10. Scegliere RunSub/UserFormdal menu Esegui .
Quando viene visualizzato il form utente, viene visualizzata la data corrente in TextBox1. Quando si sceglie il controllo SpinButton , la data verrà incrementato o diminuito di un giorno.

In questo esempio, se si modifica la proprietà SmallChange di SpinButton1, non influenza il numero di giorni che in TextBox1 è modificato da quando si fa clic SpinButton1. Il numero di giorni è determinato solo dalla routine che si era connessi di eventi SpinUp e SpinDown di SpinButton1.

Per ulteriori informazioni sul controllo SpinButton, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:
213224 XL2000: esempio di Visual Basic per l'utilizzo di un pulsante di selezione con una data

Controllo RefEdit

Il controllo RefEdit imita il comportamento delle caselle di riferimento incorporate in Excel. È possibile utilizzare la proprietà Value per ottenere l'indirizzo della cella corrente che vengono memorizzati in un controllo RefEdit .

Come popolare un intervallo di celle in base all'intervallo selezionato utilizzando il controllo RefEdit

Per utilizzare il controllo RefEdit per inserire dati nelle celle, attenersi alla seguente procedura:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  3. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  4. Aggiungere un controllo RefEdit allo UserForm.
  5. Aggiungere un controllo CommandButton al form utente.
  6. Fare doppio clic la toopen di controllo CommandButton finestra del codice per il controllo CommandButton .
  7. Nella finestra del codice, digitare il seguente codice per l'evento Clic su CommandButton1 :
    Private Sub CommandButton1_Click()    Dim MyRange As String    MyRange = RefEdit1.Value    Range(MyRange).Value = "test"    Unload MeEnd Sub
  8. Scegliere RunSub/UserFormdal menu Esegui .

    Il UserFormappears.
  9. Fare clic sul pulsante nel controllo RefEdit .

    Si noti che comprime UserForm.
  10. Selezionare un intervallo di celle, ad esempio a1: a5 e quindi fare clic su thebutton nel controllo RefEdit per espandere il form utente.
  11. Fare clic su CommandButton1.
Chiude il form utente e le celle selezionate ora contengono la parola "test".

Per ulteriori informazioni sul controllo RefEdit, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base:
213776 XL2000: Come utilizzare il controllo RefEdit con un oggetto UserForm

Controllo immagine

Lo scopo del controllo immagine è visualizzare un'immagine in un form utente. Per assegnare un'immagine a un controllo immagine in fase di esecuzione, utilizzare la funzione LoadPicture .

Come caricare un'immagine in un controllo immagine

Per inserire un controllo immagine che viene richiesto di selezionare un'immagine da caricare quando si sceglie il controllo immagine , attenersi alla seguente procedura:
  1. Avviare Excel e quindi aprire una nuova cartella di lavoro vuoto.
  2. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  3. Dal menu Inserisci , fare clic sulForm per inserire un oggetto UserForm nella cartella di lavoro.
  4. Aggiungere un controllo Image in UserForm.
  5. Fare doppio clic sul controllo immagine per aprire la finestra visualizzare per il controllo immagine .
  6. Nella finestra del codice, digitare il seguente codice per l'evento Click Image1 :
    Private Sub Image1_Click()    Dim fname As String        ' Display the Open dialog box.    fname = Application.GetOpenFilename(filefilter:= _            "Bitmap Files(*.bmp),*.bmp", Title:="Select Image To Open")        ' If you did not click Cancel...    If fname <> "False" Then        ' Load the bitmap into the Image control.        Image1.Picture = LoadPicture(fname)        ' Refresh the UserForm.        Me.Repaint    End IfEnd Sub
  7. Scegliere RunSub/UserFormdal menu Esegui .

    Viene visualizzato il form utente.
  8. Selezionare il controllo Image .

    Quando si fa clic sul controllo di immagine , boxappears la finestra di dialogo Selezione immagine da aprire , e quindi è possibile selezionare un file bitmap da inserire in thecontrol.
Per ulteriori informazioni sul controllo immagine, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:
213732 XL2000: Mediante la funzione LoadPicture con un controllo immagine

Informazioni aggiuntive

Il Visualizzatore oggetti

Un elenco completo di tutte le proprietà e metodi per un comando specifico è disponibile nel Visualizzatore oggetti. Per trovare queste informazioni in Excel, eseguire la procedura seguente:
  1. ScegliereMacrodal menu Strumenti e quindi fare clic su Visual BasicEditor.
  2. Dal menu Visualizza , fare clic su : ObjectBrowser.
  3. Nella casella di Testo di ricerca , digitare il nome del controllo che si desidera e quindi fare clic su Cerca.
Per ulteriori informazioni su come utilizzare il Visualizzatore oggetti, in Visual Basic Editor scegliere Guida in linea di Microsoft Visual Basic dal menu ? , digitare Visualizzatore oggetti nell'Assistente di Office o nella ricerca libera, quindi fare clic su Cerca per visualizzare l'argomento.
Per ulteriori informazioni su come installare Guida di Microsoft Excel nel computer, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
231946 OFF2000: Come aggiungere o rimuovere un singolo programma di Office o un componente

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 829070 - Ultima revisione: 06/11/2016 18:13:00 - Revisione: 9.0

Microsoft Office Excel 2003, Microsoft Excel 2010, Microsoft Office Excel 2007, Excel 2016, Microsoft Excel 2013

  • kbprogramming kbfunctions kbhowtomaster kbhowto kbmt KB829070 KbMtit
Feedback