Macro da valore cella



  • Macro da valore cella
    di Gioama2000 (utente non iscritto) data: 09/03/2010

    Vorrei sapere se c'è la possibilità di far partire le macro (scritte con il "registratore")facendo variare il valore di una cella. in pratica vorrei, per esempio, che quando la cella a1 assume il valore 1 partisse la "macro1",se assume il valore 2 partisse la "macro2", ecc. non ho molta esperienza con vba quindi ringrazio fin d'ora se le eventuali risposte non useranno un linguaggio troppo "tecnico".



  • di Big ronnie (utente non iscritto) data: 09/03/2010

    Ciao gioama2000,
    inserisci la macro nell'editor vba(dove si scrivono le macro) del foglio contenente la cella che deve cambiare.

    ciao big
     
    Sub Worksheet_Change(ByVal Target As Excel.Range)
    'Uno Due tre sono macro scritte in un modulo standard
    If Intersect(Target, Range("A1")) Is Nothing Then
      Exit Sub
    Else
      Select Case Target
        Case Is = 1
          Application.Run ("Uno")
        Case Is = 2
          Application.Run ("Due")
        Case Is = 3
          Application.Run ("Tre")
      End Select
    End If
    End Sub
    



  • di Gioama2000 (utente non iscritto) data: 09/03/2010

    Grazie big! mi sei stato di grande aiuto. scusa la domanda forse un po' ingenua, ma quante macro si possono comandare? se invece ne avessi solo due, basta cancellare _ case is = 3
    application.run ("tre")
    grazie ancora e ciao



  • di Big ronnie (utente non iscritto) data: 09/03/2010

    Credo che si faccia prima a stancarsi di scrivere il codice che a raggiunger il limite massimo, anche perchè in questo modo ne esegui sempre una alla volta di macro.

    si sono quelle due righe da togliere per due sole macro.

    ciao big



  • di Gioama2000 (utente non iscritto) data: 10/03/2010

    Grazie big, sei veramente “grande”!... quasi approfitto della tua cortesia per porti un’altra domanda.
    ho un foglio (di excel) che si riempie con dati inseriti da alcune macro. e’ possibile fare apparire la pagina sempre con l’ultimo dato inserito? se per esempio gli ultimi dati sono stati inseriti sul rigo 1000, io vorrei che la pagina si aprisse col la riga 1000 visibile (ma non sempre alla stessa riga prefissata). chiedo troppo, vero?!...



  • di Big ronnie (utente non iscritto) data: 10/03/2010

    Ciao gioama,

    inserisci la macro nel foglio che ti interessa.
    variando il valore 20 varierà la posizione dell'ultima riga con i dati inseriti,così è circa al centro.
    spero di aver capito ciò che vuoi,se nò sono qui.

    ciao big
     
    Private Sub Worksheet_Activate()
    ActiveWindow.ScrollRow = Me.UsedRange.Rows.Count - 20
    End Sub



  • di Gioama2000 (utente non iscritto) data: 11/03/2010

    Big, le sai tutte!...le istruzioni funzionano perfettamente, ma purtroppo (per me) non ottengo il risultato desiderato perché non ti avevo spiegato tutto!
    la mia macro inserisce sempre i dati alla riga 5000, ma poi la stessa macro riordina i dati (ordinando la data nella colonna a) a me piacerebbe che il foglio si aprisse visualizzando l’ultima riga scritta! (adesso, naturalmente, visualizza la riga 5000, che però è vuota). e’ possibile ottenere invece ciò che mi interessa? chiedo troppo, vero…



  • di Big ronnie (utente non iscritto) data: 11/03/2010

    Ciao gioama,

    nell'editor vba clicca sulla cartella thisworkbook e dopo che si è aperta clicca nella finestra con scritto generale dopodichè seleziona workbook.
    nell'evento che ora ti appare copia la riga di codice che ti ho già inviato.

    (activewindow.scrollrow = me.usedrange.rows.count - 20)

    chiudi salvando e riapri ed il gioco è fatto.

    ciao big


  • Errata corrige
    di Big ronnie (utente non iscritto) data: 11/03/2010

    Sostituisci nella riga me con il nome del foglio (es:sheets("nome tuo foglio") con l'ultima riga da visualizzare.

    ciao big



  • di Gioama2000 (utente non iscritto) data: 11/03/2010

    Nel workbook ho scritto così:

    private sub workbook_open()
    activewindow.scrollrow = sheets("cassa contanti").usedrange.rows.count - 20
    end sub

    ho dovuto scrivere solo / active……ecc. …-20 / (le altre due righe c’erano già in automatico)
    … ma non funziona.
    io non so dove e come indicare “l’ultima riga da visualizzare” (anche perché varia ad ogni aggiunta di dati, se per esempio adesso è la riga 300, al prossimo inserimento dati sarà la 301, poi la 302, ecc.)
    ciao. gioama



  • di Big ronnie (utente non iscritto) data: 11/03/2010

    Togli .usedrange chiudi e riapri

    ciao big



  • di Gioama2000 (utente non iscritto) data: 14/03/2010

    Grazie big, sei stato molto gentile, ho provato la correzione che mi hai suggerito, ma a me non funziona. mi sarà sfuggito qualche cosa... te l'ho detto che sono un principiante imbranato!
    comunque non ti scervellare più, le righe le sposterò manualmente. ti ringrazio ancora per le istruzioni che mi hai dato per "comandare le macro da casella". mi sono state molto utili e adesso il programmino funziona benissimo. ciao gioama



  • di Big ronnie (utente non iscritto) data: 15/03/2010

    Ciao gioama,

    per me aiutarti non è un problema,dovresti soltanto spiegare bene ciò che vorresti fare.

    ciao big