Condividi:        

[EXCEL] eseguire macro in relazione al valore di una cella

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[EXCEL] eseguire macro in relazione al valore di una cella

Postdi brikki » 04/01/12 12:13

Ciao a tutti, è il mio primo post (e spero che i prossimi siano per aiutare qualcuno in qualcosa che io conosco già... XD)
avrei bisogno di un aiutino... che per me sarebbe un aiutone XD. vorrei che nel mio file excel si eseguisse automaticamente una macro a seconda del valore di una determinata cella. Mi spiego meglio:
se nella cella A1 compare il valore "13" dovrebbe essere eseguita la macro denominata "pippo"; se nella cella A1 compare il valore "25" dovrebbe essere eseguita la macro denominata "zuppo"... e via di seguito.
Qualcuno di voi sa come si fa?

GRAZIE :) :)
brikki
Utente Junior
 
Post: 23
Iscritto il: 04/01/12 11:34

Sponsor
 

Re: [EXCEL] eseguire macro in relazione al valore di una cel

Postdi Anthony47 » 04/01/12 12:39

Ciao brikki, benvenuto nel forum.

Per scegliere quale macro eseguire si potra' usare l' Istruzione Select Case; ma per decidere come lanciare la macro che contiene il Select Case dovresti dire come la cella A1 assume il suo valore (da tastiera, via formula, via macro, via dde, ...).

Ciao, ti aspettiamo.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] eseguire macro in relazione al valore di una cel

Postdi brikki » 04/01/12 13:15

(grazie della risposta),
dunque il valore viene assunto tramite la selezione di una voce elencata in una casella di riepilogo. Per essere più chiaro: nella cella A1 compare un valore diverso a seconda della selezione effettuata nella casella di riepilogo. il valore in base al quale devono essere eseguite le macro è appunto quest'ultimo contenuto nella cella A1...
brikki
Utente Junior
 
Post: 23
Iscritto il: 04/01/12 11:34

Re: [EXCEL] eseguire macro in relazione al valore di una cel

Postdi brikki » 04/01/12 16:45

...frugando sul forum ho trovato questo codice:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Cdati = "A1"
If Not Application.Intersect(Target, Range(Cdati)) Is Nothing Then
If Target = 1 Then Call Macro1
If Target = 2 Then Call Macro2
If Target = 3 Then Call Macro3
End If
End Sub

che però non funziona come vorrei: perchè le macro si avviino devo inserire a mano nella cella A1 il valore numerico e premere invio sulla tastiera. A me piacerebbe invece che le macro partissero non appena viene selezionata una voce dal menu a tendina.

:?:
brikki
Utente Junior
 
Post: 23
Iscritto il: 04/01/12 11:34

Re: [EXCEL] eseguire macro in relazione al valore di una cel

Postdi Anthony47 » 04/01/12 19:08

Il "controllo" Casella di riepilogo e' disponibile tra gli strumenti "Moduli", oppure "Strumenti di controllo", oppure tra gli strumenti di una userform.

Se e' quello (piu' semplice) dei Moduli, allora
-carica questa macro in un Modulo standard (es Modulo1)
Codice: Seleziona tutto
Sub brikki()
Select Case Sheets("Foglio3").Range("A1").Value
    Case 1      'Valore 1
    Call macroa
    Case 2      'Valore 2
    Call macrob
    Case 3      'Valore 3
    Call macroc
'    case xyz   'Valore xyz
'    Call macroxyz
'    etc
'    etc
'
End Select
End Sub

-poi tasto dx sulla forma, scegli Assegna macro, seleziona dall' elenco che ti propone la macro brikki.

Se si tratta invece dell' oggetto Strumenti di controllo o di quello della form, inserirai il codice che ti ho dato (eccetto Sub brikki /End Sub) all' interno della macro di ListBox1_Click

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] eseguire macro in relazione al valore di una cel

Postdi brikki » 05/01/12 07:45

RISOLTOOO!!! :P :P :P
perfetto grazie mille...
ha funzionato col primo caso che mi hai prospettato.
ho usato il codice in un modulo e ho assegnato alla casella combinata la macro "brikki".
attenzione (per utenti inesperti come il sottoscritto): le macro, prima di essere richiamate nel codice di cui sopra, devono essere tutte esistenti.

GRAZIE ANCORA...

p.s.: non ho trovato ancora un argomento nel quale sia talmente esperto da poter dare una mano...
...ma vi tengo d'occhio! :D
brikki
Utente Junior
 
Post: 23
Iscritto il: 04/01/12 11:34

Re: [EXCEL] eseguire macro in relazione al valore di una cel

Postdi Cele79 » 15/01/14 14:06

Ciao!
Di macro con ne capisco nulla ma ho creato questa e forza di tentativi e mi va benissimo ma vorrei che si attivasse da sola quando nelle cella j4 c'è il valore 18 che e dato da una formula che comprende le celle G4 e i4!
Spero si possa fare!

Sub MacroA()
'
' Macro9 Macro
'
' Scelta rapida da tastiera: CTRL+k
'
Worksheets("Foglio2").Activate
Rows("5:5").Select
Selection.Insert Shift:=xlDown
Rows("4:4").Select
Selection.Copy
Rows("5:5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("G4").Select
Application.CutCopyMode = False
Selection.ClearContents
End Sub
Cele79
Utente Senior
 
Post: 102
Iscritto il: 14/01/14 12:32

Re: [EXCEL] eseguire macro in relazione al valore di una cel

Postdi Cele79 » 15/01/14 20:54

Scusatemi ma non riesco a capire cosa devo fare!
:cry:
Cele79
Utente Senior
 
Post: 102
Iscritto il: 14/01/14 12:32

Re: [EXCEL] eseguire macro in relazione al valore di una cel

Postdi Anthony47 » 16/01/14 03:17

Di lotto non capisco un' acca, quindi non sono intervenuto sul quesito precedente.
In generale, se vuoi far partire da sola una macro, devi usare un "evento"; nello specifico o l' evento WorksheetChange, che si innesca quando qualcuno inserisce un dato da tastiera, oppure l' evento Calculate che si innesca su qualsiasi ricalcolo effettuato nel foglio.
Hai detto che J4 dipende da G4 e I4, ma bisognerebbe sapere da chi dipendono a loro volta quelle due celle, e risalire a quali celle manipolate manualmente si puo' associare il cambiamento su J4; un processo probabilmente con varie ramificazioni, quindi poco pratico.
Volendo usare l' evento Change:
-identifica una cella libera sul tuo foglio di lavoro; supponiamo sia la AZ1
-tasto dx sul tab col nome del Foglio; scegli Visualizza codice
-nel foglio dell' editor delle mecro che cosi' si apre inserire questa macro:
Codice: Seleziona tutto
Private Sub Worksheet_Calculate()
If IsError(Range("J4")) Then Exit Sub
If Range("J4") <> 18 Then Exit Sub
If Range("AZ1").Value <> Range("J4").Value Then
    Application.EnableEvents = False
    Range("AZ1").Value = Range("J4").Value
    Call macroA
    Application.EnableEvents = True
End If
End Sub
In questo modo, quando J4 "diventa" 18 la MacroA viene lanciata 1 volta.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] eseguire macro in relazione al valore di una cel

Postdi Cele79 » 16/01/14 13:30

Ciao Anthony!
Prima di tutto grazie della risposta!
Ho provato la tua macro e sono riuscito a farla funzionare e ora sta funzionando come vorrei!
All'inizio ho avuto problemi!
Quando provo nuove cose faccio sempre una copia del file e lavoro su la copia!
Cmque, ho fatto come hai detto te e come ho digitato il 18 nella celle J4 la macro si è attiva bene.
Poi ho provato a mettere una formula nella cella J4 (somma di due celle) e la macro non mi partiva e mi partiva solo se chiudevo e riaprivo il file!
Poi,non so come,non mi funzionava nemmeno piu facendo cosi e allora ho fatto una copia del file e ho rifatto tutto il procedimento e mi funzionava solo la prima volta e basta e nemmeno chiudendo e riaprendo il file! I misteri di excel!
Alla fine ho preso e modificato il range(AZ1) in L1 e cancellato il numero 18 che mi usciva in AZ1 e ho fatto rifare il calcolo e da quel momento funziona a meraviglia ogni volta che in J4 c'è 18!
La formula che uso in J4 è questa =CONFRONTA($G$4;Foglio1!X21:X38;0) e funziona bene!
Ora vorrei chiederti se è possibile,tramite l'inserimento di un numero in una cella,modificare il numero quando si attivi la macro.
Ora si attiva quando il calcolo arriva a 18 ma non vorrei ogni volta che voglio cambiarlo entrare nella macro ma poterlo fare cambiando solo il numero in una cella prestabilita possibilmente la K4.
Spero sia possibile!
Ancora grazie!
Cele79
Utente Senior
 
Post: 102
Iscritto il: 14/01/14 12:32

Re: [EXCEL] eseguire macro in relazione al valore di una cel

Postdi Anthony47 » 16/01/14 13:36

Non so cosa potrebbe aver innescato la confusione che hai descritto sopra...

Per quanto riguarda la nuova richiesta, dovrebbe essere sufficiente sostituire
If Range("J4") <> 18 Then Exit Sub
con
If Range("J4") <> Range("K4") Or Range("K4") = "" Then Exit Sub

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] eseguire macro in relazione al valore di una cel

Postdi Cele79 » 16/01/14 13:56

Funziona che una meraviglia!
Ancora grazie Anthony!
Cele79
Utente Senior
 
Post: 102
Iscritto il: 14/01/14 12:32

Re: [EXCEL] eseguire macro in relazione al valore di una cel

Postdi Cele79 » 18/01/14 11:19

Anthony47 ha scritto:Non so cosa potrebbe aver innescato la confusione che hai descritto sopra...

Per quanto riguarda la nuova richiesta, dovrebbe essere sufficiente sostituire
If Range("J4") <> 18 Then Exit Sub
con
If Range("J4") <> Range("K4") Or Range("K4") = "" Then Exit Sub


Ciao Anthony!
Ho riscontrato un problema che mi fa la macro.
Nella cella K4 imposto il valore che fa attivare la macro e in J4 c'è il progressivo,che quando arriva ad essere uguale a K4, attiva la macro, e sin qui tutto ok!
Una volta che mi fa questo lavoro la serie in K4 inizia di nuovo,però,se lascio lo stesso valore in J4, quando K4 è di nuovo uguale a J4 la macro non si attiva! Dovrei aumentare o diminuire il valore in J4 per funzionare!
é possibile farlo funzionare senza modificare J4 ogni volta?
Grazie!
Cele79
Utente Senior
 
Post: 102
Iscritto il: 14/01/14 12:32

Re: [EXCEL] eseguire macro in relazione al valore di una cel

Postdi Anthony47 » 18/01/14 12:10

Eh.... Articoliamo diversamente la macro:
Codice: Seleziona tutto
Private Sub Worksheet_Calculate()
If IsError(Range("J4")) Then Exit Sub
If Range("J4") = Range("K4") Then     
    If Range("AZ1").Value <> Range("J4").Value Then    '<< AZ1??
        Application.EnableEvents = False
        Range("AZ1").Value = Range("J4").Value         '<< AZ1??
        Call macroA
        Application.EnableEvents = True
    End If
Else
    Range("AZ1").Value = Range("J4").Value             '<< AZ1??
End if
End Sub


Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] eseguire macro in relazione al valore di una cel

Postdi Cele79 » 18/01/14 13:31

Grazie Anthony, funziona benissimo
Cele79
Utente Senior
 
Post: 102
Iscritto il: 14/01/14 12:32

Re: [EXCEL] eseguire macro in relazione al valore di una cel

Postdi Cele79 » 19/01/14 08:04

Funziona benissimo ma ogni tanto mi da questo errore e non so perchè:
ERRORE DI RUN-TIME'28'
SPAZIO DELLO STACK ESAURITO

Poi mi evidenzia in giallo IF IS ERROR(RANGE("J4")) THEN

Poi quando modifico K4 o cambio la data di partenza del conteggio vedo che per un 3-4 secondi resta calcolando!
Che può essere?
Cele79
Utente Senior
 
Post: 102
Iscritto il: 14/01/14 12:32

Re: [EXCEL] eseguire macro in relazione al valore di una cel

Postdi Anthony47 » 21/01/14 03:00

Hummm.... non ho mai ancora avuto problemi di stack...
Per debuggare la situazione potresti seguire quanto suggerito qui: http://msdn.microsoft.com/en-us/library ... 60%29.aspx

Comunque, in prima battuta, prova a modificare come segue:
Codice: Seleziona tutto
Private Sub Worksheet_Calculate()
If Not IsError(Range("J4")) Then
    If Range("J4") = Range("K4") Then
        If Range("AZ1").Value <> Range("J4").Value Then    '<< AZ1??
            Application.EnableEvents = False
            Range("AZ1").Value = Range("J4").Value         '<< AZ1??
            Call macroA
            Application.EnableEvents = True
        End If
    Else
        Range("AZ1").Value = Range("J4").Value             '<< AZ1??
    End If
End If
End Sub


Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] eseguire macro in relazione al valore di una cel

Postdi Cele79 » 21/01/14 09:18

Ho provato a capire che devo fare non ci ho capito nulla!
Questa è la macro che deve funzionare quando i due valori sono uguali;

Codice: Seleziona tutto
Sub MacroA()
Worksheets("Foglio2").Activate
    Rows("5:5").Select
    Selection.Insert Shift:=xlDown
    Rows("4:4").Select
    Selection.Copy
    Rows("5:5").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("l4").Select
    Application.CutCopyMode = False
    Selection.ClearContents
End Sub

Prima inserisce una riga nuova tra la 4 e la 5,poi copia la riga 4 e incolla solo i valori nella riga 5 quando J4 è uguale a K4.
Questa deve funzionare solo nel foglio 2 ma l'imput viene dato quando nel foglio1 io inserisco il range CH3:CN3 e da li partono tutti i calcoli sia nel foglio1 che nel riga4 del foglio2 che è quella che copio solo quando J4 e K4 sono uguali!
Di sicuro c'è qualcosa che non va in questa macro che mi fa uscire l'errore!
Grazie!
Cele79
Utente Senior
 
Post: 102
Iscritto il: 14/01/14 12:32

Re: [EXCEL] eseguire macro in relazione al valore di una cel

Postdi Anthony47 » 22/01/14 00:41

Fin'ora sono intervenuto solo per far eseguire il tuo codice in determnate situazioni; quindi il codice che ti ho dato ieri sera sostituisce in toto il precedente.
Non ho modificato il tuo codice (MacroA) perche' sono strafavorevole all' uso di macro autoregistrate, anche se esse hanno dei comportamenti grossolani.
Quindi, fermo restando che il sono convinto che il tuo codice per MacroA va bene, puoi sostituire la riga Call MacroA nella mia macro con queste righe:
Codice: Seleziona tutto
    Sheets("Foglio2").Rows("5:5").Insert
    Sheets("Foglio2").Rows("4:4").Copy
    Sheets("Foglio2").Cells(5, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Sheets("Foglio2").Range("L4").ClearContents

In questo modo tutto il codice di Sub MacroA diventa superfluo.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] eseguire macro in relazione al valore di una cel

Postdi Cele79 » 22/01/14 08:13

La macro fa il suo dovere ma quando apro il file comincia a ricalcolare tutto e ci mette un po ad aprirsi!
Ogni tanto mi da errore 28 e mi fa impallare excel scrivendomi che ha smesso di funzionare.
Mi basta cambiare il valore in K4 o la data di partenza che comincia a calcolare ma ogni tanto si impalla e dice errore!
Ho messo piu celle e ora la cella J4 èla cella O4 mentre la K4 è P4 e ho sostituito nella macro ma credo non sia quello il problema!
la formula che ho in O4 è questa:
Codice: Seleziona tutto
=SE(VAL.ERRORE(CONFRONTA($L$4;ESTRAZIONI!X21:X38;0));"0";CONFRONTA($L$4;ESTRAZIONI!X21:X38;0))


Mi è bastato copiare la formula che è partito il calcolo e mi ha dato errore 28!
Ora credo non sia piu problema di macro ma credo di impostazioni!
:cry:
Cele79
Utente Senior
 
Post: 102
Iscritto il: 14/01/14 12:32

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL] eseguire macro in relazione al valore di una cella":


Chi c’è in linea

Visitano il forum: Nessuno e 84 ospiti