Condividi:        

Esecuzione Macro Condizionata 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

Esecuzione Macro Condizionata al valore di una cella

Postdi cappccia » 18/11/15 14:45

Salve,
sono un neofita di VBA e questo è il mio primo post, spero possiate aiutarmi.

Devo creare una macro che si attivi nel caso in cui in una cella vi sia un valore <15, e la macro dovrebbe nascondere delle righe ed aggiungerne delle altre. Al variare del valore, tramite tastiera, della cella, la macro dovrebbe fare l'operazione inversa, ossia far ritornare visibili le righe nascoste e togliere le nuove righe aggiunte.
Chiaramente la macro dovrebbe partire in automatico una volta cambiato il valore nella cella.


Sono riuscito a risolvere parzialmente il problema guardando nel forum soluzioni simili e sono giunto a questo codice:
Codice: Seleziona tutto
Sub Macro1()
If Range("$coordinate$cella").Value < "15" Then
Range ("Numero_righe_selezionate).Select
Range("Coordinate_casella_selezionata_nelle_righe_selezionate_sopra").Activate
Selection.EntireRow.Hidden = True
End If
End Sub


Questo codice mi nasconde le righe selezionate automaticamente ma:
- la macro non si avvia in automatico al variare del valore nella cella
- se la cella contiene un valore >15 non torna a scoprire le celle nascoste in precedenza
- non viene aggiunta nessuna riga. Ci sarebbe anche il problema dovuto al fatto che essendo aggiunte le prime due righe in alto del foglio, sfalsa tutti i valori dei riferimenti della macro

Spero di essere stato chiaro, ringrazio in anticipo per la disponibilità
cappccia
Utente Junior
 
Post: 11
Iscritto il: 18/11/15 14:19

Sponsor
 

Re: Esecuzione Macro Condizionata al valore di una cella

Postdi alfrimpa » 18/11/15 15:21

Ciao cappccia

Dovresti provare con una macro di questo tipo (ovviamente da adattare) e da inserire nel modulo del foglio interessato (nin uno standard)

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("$coordinate$cella")) Is Nothing Then
    If Target.Value < "15" Then
        Range("Numero_righe_selezionate").Select
        Range("Coordinate_casella_selezionata_nelle_righe_selezionate_sopra").Activate
        Selection.EntireRow.Hidden = True
    End If
End If
End Sub
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Esecuzione Macro Condizionata al valore di una cella

Postdi alfrimpa » 18/11/15 15:22

Comunque ti consigliere di allegare il file (senza dati sensibili) e spiegare sul foglio quello che vuoi ottenere.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Esecuzione Macro Condizionata al valore di una cella

Postdi alfrimpa » 18/11/15 16:24

Il valore della cella cui vuoi condizionare l'esecuzione della macro lo inserisci tu o riviene da una formula?
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Esecuzione Macro Condizionata al valore di una cella

Postdi cappccia » 18/11/15 17:29

Ciao alfrimpa,

ti ringrazio per la celere risposta.

Il valore della cella viene inserito da me tramite la tastiera.

Ecco il file in allegato:

- verde la cella che al variare deve eseguire la macro
- in rosso le righe da nascondere
- in azzurro dove vorrei che fossero inserite le due nuove righe

Al variare della cella, le righe evidenziate devono essere rispettivamente inserite o nascoste

http://www.filedropper.com/prova_2
cappccia
Utente Junior
 
Post: 11
Iscritto il: 18/11/15 14:19

Re: Esecuzione Macro Condizionata al valore di una cella

Postdi Anthony47 » 18/11/15 23:07

Ciao cappcia, benvenuto nel forum.
Prima di pensare ad una riposta vorrei sapere come si deve comportare questa automazione nel caso che l'utente introduca piu' volte di seguito un valore <15, oppure sempre piu' volte di seguito un valore >=15

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

Re: Esecuzione Macro Condizionata al valore di una cella

Postdi cappccia » 19/11/15 10:20

Buongiorno Anthony47,

Se l'utente inserisce diverse volte un valore <15, l'automazione deve attivarsi, nel momento in cui inserisce un valore >=15 si deve disattivare.

Essendo un preventivo da dare al cliente, se la cella ha un valore <15 allora altre celle hanno valore 0 e devono essere nascoste, e per centrare il preventivo nel foglio vanno aggiunte delle righe in cima.

Non so se possa essere un problema il fatto che inserendo delle righe in cima, la cella di riferimento cambi le coordinate e si sballi tutto.
cappccia
Utente Junior
 
Post: 11
Iscritto il: 18/11/15 14:19

Re: Esecuzione Macro Condizionata al valore di una cella

Postdi Anthony47 » 19/11/15 12:55

Se l'utente inserisce diverse volte un valore <15, l'automazione deve attivarsi, nel momento in cui inserisce un valore >=15 si deve disattivare.
Questa risposta e' inutile, ma fortunatamente aiuta invece quello che dici successivamente:
Essendo un preventivo da dare al cliente, se la cella ha un valore <15 allora altre celle hanno valore 0 e devono essere nascoste, e per centrare il preventivo nel foglio vanno aggiunte delle righe in cima

Insomma vuoi stampare sempre un tot di righe, per cui se ne nascondi 2 vuoi aggiungerne altre due vuote in cima...
Allora facciamo cosi':
-nel tuo foglio metti in testa le due righe vuote
-in questo modo, la cella il cui contenuto e' da testare non sara' piu' D4 ma D6, e le righe da nascondere non sono piu' 11:12 ma 13:14
-tasto dx sul tab col nome del foglio su cui lavori; scegli Visualizza codice; copia questo codice e incollalo nel frame vuoto di dx:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myCell As String, PiPpo As Range
'
myCell = "$D$6"
For Each PiPpo In Target
    If PiPpo.Address = myCell Then
        If PiPpo.Value < 15 Then
            Rows("13:14").Hidden = True
            Rows("1:2").Hidden = False
        Else
            Rows("13:14").Hidden = False
            Rows("1:2").Hidden = True
        End If
    End If
Next PiPpo
End Sub

Torna quindi sul foglio Excel e prova.

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

Re: Esecuzione Macro Condizionata al valore di una cella

Postdi cappccia » 20/11/15 21:42

Funziona!

Grazie mille Anthony47 e alfrimpa!

Spero di poter ricambiare il favore un giorno.

Alla prossima!
cappccia
Utente Junior
 
Post: 11
Iscritto il: 18/11/15 14:19


Torna a Applicazioni Office Windows


Topic correlati a "Esecuzione Macro Condizionata al valore di una cella":

BTp Valore
Autore: MarioLombardi
Forum: Forum off-topic
Risposte: 2

Chi c’è in linea

Visitano il forum: Nessuno e 76 ospiti