Unica macro per commandbutton



  • Unica macro per commandbutton
    di Costadilevante (utente non iscritto) data: 02/11/2010

    Ho creato una maschera con 2500 bottoni di comando. ho creato un'unica macro bottoneclick che gestisce il click di ogni bottone.
    voglio che quando viene cliccato un generico bottone x venga eseguita la macro bottoneclick e non commandbuttonx_click. qualcosa di simile al command handler di .net



  • di Enzo (utente non iscritto) data: 02/11/2010

    Per richiamare una macro
     
    call bottoneclick 



  • di Costadilevante (utente non iscritto) data: 02/11/2010

    Questo mi risolve il problema in parte, poichè dovrei scrivere il comando su 2500 commandbuttonx_click :(



  • di Albatros54 (utente non iscritto) data: 02/11/2010

    Mmmm....zzica che e' un alveare!!!!
    ti passo il codice del grande mauro che fa al tuo caso.
    nell'editor di vba crei una classe e la rinomini clscommandbutton ed incolli il codice postato sotto.
    nella tua userform con i tuoi 2500..pulsanti nell'evento inizialize incolla il codice sotto.
    ciao
    albatros54
     
    >> Modulo di Classe<<<<
    Option Explicit
    
    Public WithEvents cmd As MSForms.CommandButton
    Public frm As UserForm
    
    
    Private Sub cmd_Click()
            Call mEsegui(cmd.Name)
    End Sub
    
    
    Private Sub mEsegui(ByVal s As String)
            MsgBox "Hai premuto: " & s
    End Sub
    >> Fine Modulo di Classe<<<<
    
    >>> Codice da incollare su Userform<<<
    Option Explicit
    
    
    Dim colCommandButton As Collection
    Dim myCmd As clsCommandButton
    
    
    Private Sub UserForm_Initialize()
        
        
        Dim ctl As MSForms.Control
        
       
        If Not colCommandButton Is Nothing Then
           
            Set colCommandButton = Nothing
        End If
       
        Set colCommandButton = New Collection
        
        
        For Each ctl In Me.Controls
            
            If TypeOf ctl Is MSForms.CommandButton Then
                
                Set myCmd = New clsCommandButton
                Set myCmd.cmd = ctl
                Set myCmd.frm = Me
                colCommandButton.Add myCmd
            End If
        Next
        
        
        Set ctl = Nothing
        
    End Sub
    
    
    Private Sub UserForm_Terminate()
        
        Set myCmd = Nothing
        Set colCommandButton = Nothing
    End Sub
    
    



  • di Costadilevante (utente non iscritto) data: 02/11/2010

    Stupendo!!!
    e' proprio quello che cercavo. appena torno a casa lo provo.

    ps:
    l'alveare non è altro che una simulazione del gioco "life", che sto creando a puro scopo didattico ;)