Domanda.

nome=imerio
cognome=pinsuti
versione=2000
conosco2=medio
vba=SI
macro=SI
email=pinsuti.imerio@katamail.com
chri=479
problema=Carissimo Ennius complimenti vivissimi per il tuo sito che mi ha aiutato tantissimo a crescere e conoscere excel e te ne ringrazio. Ma passerei alla mia domanda,ho cercato per mari (internet) et monti (libri)et praterie (guida in linea) una soluzione al mio quesito , ma non ci sono riuscito oppure non ho compreso. La mia domanda e' questa :
Si puo'inserire in una userform n.2 o + commandbutton attraverso il codice vba in un evento o in una macro ? Se si come si puo' fare?
Di nuovo grazie da Imerio.
 

Risposta.

salve Imerio, si può fare, ma dopo con i commandbuton inseriti cosa vuoi fare? lanciare delle istruzioni? A me pare un lavoraccio. Soprattutto per i problemi legati all'identificazione dei controlli inseriti rispetto ai command già presenti, e poi perchè dovresti creare via vba anche le istruzioni da assegnare ai pulsanti aggiunti. Ripeto, ognuno può fare ciò che crede, ma ricorda che per ogni command dovrai fornire anche la posizione in cui apparire sulla form, mah? Io inserirei già tutti i pulsanti di cui prevedo l'esistenza, con relative macro inserite nell'evento Click del commandbutton, poi imposterei la proprietà Visible = False a tutti quei command che dovranno essere visibili solo al bisogno, e quindi userei un istruzione più semplice, NON per aggiungere un nuovo pulsante, ma per renderlo visibile, tipo
Sub comand3()
If UserForm1.Visible = True Then
UserForm1.CommandButton3.Visible = True
End If
End Sub

questa istruzione la metterei in una macro, esterna all'userform, richiamabile da un pulsante sul foglio di lavoro.
Ricorda di settare la proprietà ShowModal della UserForm a False.
Comunque questa sotto è una macro per aggiungere un commandbutton in una form, da associare ad un pulsante: prima apre la userform e poi gli aggiunge un cmdbtn, posizionandolo:
Sub pippo()
UserForm1.Show
Set Mycmd = UserForm1.Controls.Add("Forms.CommandButton.1")
Mycmd.Left = 18
Mycmd.Top = 50
Mycmd.Width = 105
Mycmd.Height = 20
Mycmd.Caption = "This is fun."
End Sub

Dovrai però anche inserire nella sezione Generale - Dichiarazioni della userform questa dichiarazione:
Dim Mycmd As Control
Di più non posso farti, saluti, ennius