Codice vba per gestire macro



  • Codice vba per gestire macro
    di Maxxim (utente non iscritto) data: 02/12/2009

    Ciao a tutti qualcuno mi può indicare come posso gestire una macro tramite una cella di excel?
    mi spiego meglio:

    ho una cella mettiamo a1 e a fianco ho un pulsante per attivare una macro, quindi quando mi viene scritto ok, ella cella a1 il pulsante mi si attiva e se lo clicco mi parte la macro, invece se nella cella a1 mi viene scritto nd (cioè errore) la macro e in questo caso il pulsante non mi si deve attivare, quindi anche se ci clicco sopra non deve eseguire nessuna istruzione.

    grazie in anticipo per la vostre gentili risposte



  • di Ricky53 (utente non iscritto) data: 03/12/2009

    Ciao,

    allora nel "foglio1" tu hai già un pulsante "commandbutton" che hai inserito con la barra "strumenti di controllo".

    apri l'editor del vba e nel foglio1 copia il codice che ti invio.
    se in "a1" scrivi "ok" il pulsante si attiva ed al click viene eseguita la macro che devi aver già associato al pulsante.
    se in "a1 non c'è "ok" il pulsante non è attivo.

    ciao da ricky53



     
    Private Sub Worksheet_Change(ByVal Target As Range)
        CommandButton1.Enabled = False
        If UCase([A1]) = "OK" Then
            CommandButton1.Enabled = True
        End If
    End Sub
    



  • di Maxxim (utente non iscritto) data: 03/12/2009

    Grazie 100000000000 ricky53

    sono riuscito con il tuo listato ad utilizzare il
    comando come volevo.

    grazie ancora;



  • di Maxxim (utente non iscritto) data: 03/12/2009

    Scusa ricky53, ho fatto una prova mettendo una macro nello stesso foglio e tutto ok, però se vado a eseguire una macro che modifica sia il foglio1 che il foglio2 mi viene errore, ti posto il mio listato per vedere dove sbaglio:

    private sub commandbutton1_click()
    '
    ' prova macro
    '

    '
    range("b4:b7").select
    selection.copy
    sheets("foglio2").select
    range("e11:e14").select
    activesheet.paste
    sheets("foglio1").select
    application.cutcopymode = false
    selection.clearcontents
    range("b4").select

    end sub

    private sub worksheet_change(byval target as range)
    commandbutton1.enabled = false
    if ucase([a1]) = "ok" then
    commandbutton1.enabled = true
    end if
    end sub

    alla fine mi da errore run time '10041
    errore nel metodo select per la classe range.
    scusa ma non ho molta dimestichezza ancora con vba

    e poi non è possibile usare il pulsante di controllo per fare questo??.

    grazie

    grazie



  • di Mabolsie (utente non iscritto) data: 25/12/2009

    Ciao maxxim
    sostituisci la quarta riga di codice con quella che ti posto, vedrai che funziona
    ciao
     
    Activesheet.range("e11:e14")



  • di Mabolsie (utente non iscritto) data: 25/12/2009

    Scusa maxxim la riga è questa
     
    ActiveSheet.Range("e11:e14").select



  • di Maxxim (utente non iscritto) data: 25/12/2009

    Grazie 1000000000000

    perfettamente riuscito.