Risultati da 1 a 24 di 24

Discussione: IF celle assumono un valore THEN fai apparire un foglio



  1. #1
    L'avatar di micheledag
    Clicca e Apri
    Data Registrazione
    Feb 2016
    Località
    Italia
    Messaggi
    27
    Versione Office
    excel 2010
    Likes ricevuti
    0
    Likes dati
    0

    IF celle assumono un valore THEN fai apparire un foglio

    Qualcuno può cortesemente creare una macro tale che:
    se nel foglio 1 (chiamato “pippo”) la cella A1 = ok e se la cella A2 = ok, allora mostra (rendi visibile, scopri) il foglio 2 (chiamato “pluto”) altrimenti, se una delle due celle ha valore diverso da ok, non far comparire il foglio 2 e tienilo “spento”.
    Grazie mille...
    :187:
    Invia MPPM 

  2. #2
    L'avatar di A.Maurizio
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Torino
    Età
    56
    Messaggi
    383
    Versione Office
    2013
    Likes ricevuti
    44
    Likes dati
    0
    Ciao Michele se ho capito bene il tuo problema e poter aprire un Foglio Nascosto , del Tipo (Foglio 1 ) in (Foglio 2).
    Se questo e il tuo Problema allora prova a Creare questi due Listati che devi inserire in un Modulo e poi li Chiami con un tasto Inserito sul foglio 2 Per Tornare al Foglio 1 :

    Per Quanto Riguarda la chiamata alla Funzione (Vero / Falso) per poter accedere al foglio 2
    Devi Scrivere Questo :

    Codice: 
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Foglio1.Range("A1").Value = "Pippo" Then
    Foglio1.Cmd_Modifica_Report = True
    Else
    End If
    End Sub
    
    Private Sub Cmd_Apri_Foglio2_Click()
    On Error Resume Next
    Application.ScreenUpdating = False
    With ThisWorkbook
    End With
    With Foglio2
    .Activate
    .Range("A1").Select
    .Visible = xlSheetVisible
    End With
    Me.Visible = xlSheetHidden
    ActiveSheet.Range("A1").Select
    End Sub
    
    
    Tasto per il foglio 2 :
    Call foglio2.Cmd_Torna_Al_Fogli1=true
    end sub
    
    Private Sub Cmd_Torna_Al_Fogli1_Click()
    On Error Resume Next
    
    
    Application.ScreenUpdating = False
    With ThisWorkbook
    End With
    With Foglio1
    .Activate
    .Range("A1").Select
    .Visible = xlSheetVisible
    End With
    Me.Visible = xlSheetHidden
    ActiveSheet.Range("A1").Select
    End Sub
    Ultima modifica fatta da:cromagno; 01/03/16 alle 17:51 Motivo: Inserito codice tra i tag CODE...
    Invia MPPM 

  3. #3
    L'avatar di micheledag
    Clicca e Apri
    Data Registrazione
    Feb 2016
    Località
    Italia
    Messaggi
    27
    Versione Office
    excel 2010
    Likes ricevuti
    0
    Likes dati
    0
    Ti ringrazio molto per la pronta risposta. Il problema è leggermente diverso.
    Provo a scriverlo in modo che sia più comprensibile, anzichè generalizzarlo come ho fatto prima (e per questo in effetti vi manda in confusione! Scusatemi...).
    Ho due fogli: Foglio2 (ripeto Foglio2 nella macro, non Foglio1), chiamato "Controllo" in cui nelle celle A1, A2, A3, A4 in base ad altri controlli (già previsti nel Foglio2) devono scriversi alcune parole, ad esempio ok1, ok2, ok3, ok4.
    La macro deve verificare:
    Se A1=ok1, A2=ok2, A3=ok3, A4=ok4 allora attiva il Foglio1 (della macro), chiamato "Programma", altrimenti continua a tenere spento (nascosto, disattivato...) il Foglio1.
    In sostanza, basta che almeno una delle quattro celle riporti un valore diverso da quelli previsti, a far rimanere il Foglio1 nascosto ed inutilizzabile.
    Spero di aver, un pochino, scritto meglio in modo da far comprendere la mia problematica...
    Grazie ancora!
    Invia MPPM 

  4. #4

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2833
    Versione Office
    Excel 2013
    Likes ricevuti
    1027
    Likes dati
    983
    Lo scrivo da cellulare senza testarlo, quindi potrebbe avere errori:
    Codice: 
    Optional compare text
    
    Private Sub Worksheet_change(byval target As range) 
    Il Not intersect(target, range("a1:a2")) is nothing then
    If range("a1")="ok" And range("a2")="ok" Then 
    Sheets("pippo"). Visible=true
    Else
    Sheets("pippo"). Visible=false
    End if
    End if
    End sub
    Inviato dal mio GT-I9301I utilizzando Tapatalk
    Invia MPPM 

  5. #5
    L'avatar di micheledag
    Clicca e Apri
    Data Registrazione
    Feb 2016
    Località
    Italia
    Messaggi
    27
    Versione Office
    excel 2010
    Likes ricevuti
    0
    Likes dati
    0
    Grazie mille Rubik, abbiamo scritto contemporaneamente. La "reale" macro da scrivere è quella descritta precedentemente al tuo post.
    In ogni caso è un'ottima base!
    Invia MPPM 

  6. #6

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2833
    Versione Office
    Excel 2013
    Likes ricevuti
    1027
    Likes dati
    983
    Prova ad adattare quella scritta nel post #4 (riferimenti celle e nome foglio) e dovrebbe funzionare.

    Inviato dal mio GT-I9301I utilizzando Tapatalk
    Invia MPPM 

  7. #7
    L'avatar di micheledag
    Clicca e Apri
    Data Registrazione
    Feb 2016
    Località
    Italia
    Messaggi
    27
    Versione Office
    excel 2010
    Likes ricevuti
    0
    Likes dati
    0
    Spero di riuscirci, ne dubito! ahahahaha
    Invia MPPM 

  8. #8

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2833
    Versione Office
    Excel 2013
    Likes ricevuti
    1027
    Likes dati
    983
    Se hai problemi, questa sera da casa la riscrivo

    Inviato dal mio GT-I9301I utilizzando Tapatalk
    Invia MPPM 

  9. #9

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4050
    Versione Office
    2013
    Likes ricevuti
    1240
    Likes dati
    931
    Ciao a tutti,

    @micheledag

    nel modulo di classe del foglio "Controllo" potresti usare questo codice:

    Codice: 
    Option Explicit
    Option Compare Text
    
    
    Private Sub Worksheet_change(ByVal target As Range)
    Dim i As Long, Conto As Long
    
    
    If Not Intersect(target, Range("A1:A4")) Is Nothing Then
        For i = 1 To 4
            If Left(Cells(i, 1).Value, 2) = "ok" Then
                Conto = Conto + 1
            End If
        Next i
        
        If Conto = 4 Then
            Sheets("Programma").Visible = True
            Sheets("Programma").Activate
        Else
            Sheets("Programma").Visible = False
        End If
    End If
    End Sub
    Naturalmente se le celle di "controllo" dovessero essere più di 4 dovrai adattare il codice....

    Ti lascio un file di esempio...
    File Allegati File Allegati

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
    Invia MPPM 

  10. #10

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4050
    Versione Office
    2013
    Likes ricevuti
    1240
    Likes dati
    931
    [EDIT]

    Se invece di "ok1","ok2", etc... i valori possono essere diversi, puoi usare "If...And...Then" al posto del ciclo "For...Next":

    Codice: 
    Option Explicit
    Option Compare Text
    
    
    Private Sub Worksheet_change(ByVal target As Range)
    Dim i As Long, Conto As Long
    
    
    If Not Intersect(target, Range("A1:A4")) Is Nothing Then
        If Cells(1, 1).Value = "ok1" And Cells(2, 1).Value = "ok2" And _
        Cells(3, 1).Value = "ok3" And Cells(4, 1).Value = "ok4" Then
            Sheets("Programma").Visible = True
            Sheets("Programma").Activate
        Else
            Sheets("Programma").Visible = False
        End If
    End If
    End Sub

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
    Invia MPPM 

  11. #11
    L'avatar di micheledag
    Clicca e Apri
    Data Registrazione
    Feb 2016
    Località
    Italia
    Messaggi
    27
    Versione Office
    excel 2010
    Likes ricevuti
    0
    Likes dati
    0
    Grazie, grazie, grazie a tutti!!!
    Tutto ok, tranne per il fatto che vorrei tenere il foglio "Programma" bloccato.
    Nel senso la macro non mi blocca il foglio "Programma", che è invece possibile mostrare semplicemente dando "Scopri" alla linguetta.
    Questo vorrei evitarlo, se possibile.
    Devo bloccare la visione del foglio "Programma", che deve apparire solo se le 4 celle sono "ok" e sparire negli altri casi.
    Praticamente deve bloccarsi la funzione "scopri" e "nascondi" manuale sulla linguetta del foglio...
    Se po fa?...
    Invia MPPM 

  12. #12

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4050
    Versione Office
    2013
    Likes ricevuti
    1240
    Likes dati
    931
    Citazione Originariamente Scritto da micheledag Visualizza Messaggio
    Grazie, grazie, grazie a tutti!!!
    Tutto ok, tranne per il fatto che vorrei tenere il foglio "Programma" bloccato.
    Nel senso la macro non mi blocca il foglio "Programma", che è invece possibile mostrare semplicemente dando "Scopri" alla linguetta.
    Questo vorrei evitarlo, se possibile.
    Devo bloccare la visione del foglio "Programma", che deve apparire solo se le 4 celle sono "ok" e sparire negli altri casi.
    Praticamente deve bloccarsi la funzione "scopri" e "nascondi" manuale sulla linguetta del foglio...
    Se po fa?...
    Per questo basta proteggere la "Cartella di lavoro" (mettendo la spunta su "Struttura").

    Puoi aggiungere le 2 righe (colorate di rosso ) al codice:

    Codice: 
    Option Explicit
    Option Compare Text
    
    
    Private Sub Worksheet_change(ByVal target As Range)
    Dim i As Long, Conto As Long
    
    
    If Not Intersect(target, Range("A1:A4")) Is Nothing Then
        ThisWorkbook.Unprotect "123"
        If Cells(1, 1).Value = "ok1" And Cells(2, 1).Value = "ok2" And _
        Cells(3, 1).Value = "ok3" And Cells(4, 1).Value = "ok4" Then
            Sheets("Programma").Visible = True
            Sheets("Programma").Activate
        Else
            Sheets("Programma").Visible = False
        End If
    End If
    ThisWorkbook.Protect "123"
    End Sub
    La password usata è 123

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
    Invia MPPM 

  13. #13

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2833
    Versione Office
    Excel 2013
    Likes ricevuti
    1027
    Likes dati
    983
    ciao @Cromagno, @Micheledag forse intendeva questo:
    Codice: 
    Option Explicit
    Option Compare Text
    
    
    Private Sub Worksheet_change(ByVal target As Range)
    
    
    If Not Intersect(target, Range("A1:A4")) Is Nothing Then
        ThisWorkbook.Unprotect "123"
        If Cells(1, 1).Value = "ok1" And Cells(2, 1).Value = "ok2" And _
        Cells(3, 1).Value = "ok3" And Cells(4, 1).Value = "ok4" Then
            Sheets("Programma").Visible = True
            Sheets("Programma").Activate
        Else
            Sheets("Programma").Visible = xlSheetVeryHidden
        End If
    End If
    End Sub
    magari mi sbaglio.
    Invia MPPM 

  14. I seguenti utenti hanno dato un "Like"


  15. #14

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4050
    Versione Office
    2013
    Likes ricevuti
    1240
    Likes dati
    931
    Citazione Originariamente Scritto da Rubik72 Visualizza Messaggio
    ciao @Cromagno, @Micheledag forse intendeva questo:
    Codice: 
    Option Explicit
    Option Compare Text
    
    
    Private Sub Worksheet_change(ByVal target As Range)
    
    
    If Not Intersect(target, Range("A1:A4")) Is Nothing Then
        ThisWorkbook.Unprotect "123"
        If Cells(1, 1).Value = "ok1" And Cells(2, 1).Value = "ok2" And _
        Cells(3, 1).Value = "ok3" And Cells(4, 1).Value = "ok4" Then
            Sheets("Programma").Visible = True
            Sheets("Programma").Activate
        Else
            Sheets("Programma").Visible = xlSheetVeryHidden
        End If
    End If
    End Sub
    magari mi sbaglio.
    Ciao Rubik,
    direi che la tua soluzione è molto più "diretta" :246:

    non conoscevo la proprietà "xlSheetVeryHidden" :262:

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
    Invia MPPM 

  16. #15

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1027
    Versione Office
    .
    Likes ricevuti
    368
    Likes dati
    0
    Giusto per partecipare:

    Codice: 
    Private Sub Worksheet_change(ByVal target As Range)
      Dim sRis As String
      
      If Not Intersect(target, Me.Range("A1:A4")) Is Nothing Then
        sRis = Join(Application.Transpose(Me.Range("A1:A4")), "")
        With Worksheets("Programma")
          If sRis = "ok1ok2ok3ok4" Then
            .Visible = True
            .Activate
          Else
            .Visible = xlSheetVeryHidden
          End If
        End With
      End If
    End Sub
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)
    Invia MPPM 

  17. #16
    L'avatar di micheledag
    Clicca e Apri
    Data Registrazione
    Feb 2016
    Località
    Italia
    Messaggi
    27
    Versione Office
    excel 2010
    Likes ricevuti
    0
    Likes dati
    0
    Amici, mi sento una schiappa!:23:
    Invia MPPM 

  18. #17
    L'avatar di micheledag
    Clicca e Apri
    Data Registrazione
    Feb 2016
    Località
    Italia
    Messaggi
    27
    Versione Office
    excel 2010
    Likes ricevuti
    0
    Likes dati
    0
    L'ultima versione di Rubik funziona una sola volta! Uff
    Cioè, la macro parte la prima volta, ma appena una delle 4 celle non è ok, non succede nulla, ossia il foglio "Programma" rimane aperto e non si spegne :223:
    Dove sbaglio?
    Invia MPPM 

  19. #18

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2833
    Versione Office
    Excel 2013
    Likes ricevuti
    1027
    Likes dati
    983
    Lo hai scritto nel modulo di classe del foglio Controllo? Gli "events" sono abilitati?

    Inviato dal mio GT-I9301I utilizzando Tapatalk
    Invia MPPM 

  20. #19
    L'avatar di micheledag
    Clicca e Apri
    Data Registrazione
    Feb 2016
    Località
    Italia
    Messaggi
    27
    Versione Office
    excel 2010
    Likes ricevuti
    0
    Likes dati
    0
    Modulo di classe si.
    Non va
    Invia MPPM 

  21. #20

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2833
    Versione Office
    Excel 2013
    Likes ricevuti
    1027
    Likes dati
    983
    Prova a postare il file che ci do un occhiata

    Inviato dal mio GT-I9301I utilizzando Tapatalk
    Invia MPPM 

  22. #21
    L'avatar di micheledag
    Clicca e Apri
    Data Registrazione
    Feb 2016
    Località
    Italia
    Messaggi
    27
    Versione Office
    excel 2010
    Likes ricevuti
    0
    Likes dati
    0
    Si, grazie, è semplicissimo.
    Non funziona nemmeno la macro di scossa...
    Secondo me il problema è di una facilità estrema...
    File Allegati File Allegati
    Invia MPPM 

  23. #22

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1027
    Versione Office
    .
    Likes ricevuti
    368
    Likes dati
    0
    Il codice va messo nel modulo di classe del Foglio2 (Controllo) non in un modulo di classe qualsiasi.

    Poi il variare del risultato di una formula non scatena l'evento Change() quindi devi riferirti alle celle che modificano il risultato:
    Codice: 
    Private Sub Worksheet_change(ByVal target As Range)
      Dim sRis As String
      
      If Not Intersect(target, Me.Range("C1:C4")) Is Nothing Then
        sRis = Join(Application.Transpose(Me.Range("A1:A4")), "")
        With Worksheets("Programma")
          If sRis = "ok1ok2ok3ok4" Then
            .Visible = True
            .Activate
          Else
            .Visible = xlSheetVeryHidden
          End If
        End With
      End If
    End Sub
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)
    Invia MPPM 

  24. #23
    L'avatar di micheledag
    Clicca e Apri
    Data Registrazione
    Feb 2016
    Località
    Italia
    Messaggi
    27
    Versione Office
    excel 2010
    Likes ricevuti
    0
    Likes dati
    0
    Lo dicevo io che sono una schiappa...
    Ora funziona, grazie a tutti!
    Un'ultima cosa.
    Oltre a questa macro, ne aggiungerò altre due, molto semplici macro1 e macro2, alle quali assocerò due pulsanti:
    - il bottone 1 mi verificherà e scriverà ok1, ok2 e ok3;
    - il bottone 2 mi verificherà e scriverà ok4.
    Come posso fare per obbligare a cliccare prima sul bottone 1? Cioè voglio che il bottone 2 si attivi solo se prima è stato cliccato il bottone 1, oppure che la macro 2 funzioni solo se prima è stata eseguita la macro1.
    E poi si aprirà, se tutti i controlli sono soddisfatti, il foglio "Programma".
    Grazie ancora!
    Invia MPPM 

  25. #24

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4050
    Versione Office
    2013
    Likes ricevuti
    1240
    Likes dati
    931
    @micheledag
    quest'ultima domanda non ha nulla a che fare con il titolo della discussione, quindi aprine una nuova (riallegando il file e spiegando quello che vorresti) in modo che la domanda non passi inosservata da altri utenti ed anche perchè in futuro sarà facilmente rintracciabile da chi avesse un problema simile.

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
    Invia MPPM 

Discussioni Simili

  1. Risposte: 19
    Ultimo Messaggio: 21/11/16, 16:32
  2. Risposte: 3
    Ultimo Messaggio: 14/11/16, 22:00
  3. [Risolto] Eliminare righe se alcune celle assumono un determinato valore
    Di Isaize nel forum Domande su Excel VBA e MACRO
    Risposte: 9
    Ultimo Messaggio: 25/10/16, 11:13
  4. Non far apparire il risultato di una formula
    Di Raffaele Esposito nel forum Domande su Excel in generale
    Risposte: 4
    Ultimo Messaggio: 27/09/15, 13:00
  5. far apparire un calendario
    Di scapu65 nel forum Domande su Excel in generale
    Risposte: 11
    Ultimo Messaggio: 01/07/15, 20:09

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •