Gestione condizione



  • Gestione condizione
    di gargiu data: 24/09/2014 11:00:05

    Ciao a tutti,
    avrei bisogno di eseguire il seguente controllo:
    Nella colonna "G" di un foglio di lavoro posso avere una condizione "OK" oppure "NO OK" in riferimento alle righe che mi elencano un determinato oggetto. Avrei bisogno di un ciclo che mi verifichi questa colonna e all'apertura della form possa visualizzare su una msgbox tutte quelle righe che hanno la nella colonna "G" l'indicazione "NO OK".

    Grazie.



  • di Lucas87 data: 24/09/2014 11:08:00

    Ciao
    cit." su una msgbox tutte quelle righe"
    del tipo:
    NO OK è presente sulle righe: 5, 7, 15, 22



  • di gargiu data: 24/09/2014 11:34:20

    Esattamente come dici tu o qualche cosa del genere.

    Grazie per l'interesse.



  • di gdito data: 24/09/2014 12:09:19

    Ciao,
    ecco la prima soluzione che mi è venuta in mente per il tuo problema. Il ciclo itera su tutta la colonna G ma è abbastanza veloce e viene eseguito all'apertura del file, spero che sia ciò che volevi
     
    Private Sub Workbook_Open()
        Dim NoOkCol
    
        For Each COl In Range("G:G")
            If COl.Value = "NO OK" Then
                If Len(NoOkCol) > 0 Then
                    NoOkCol = NoOkCol & ", "
                End If
                
                NoOkCol = NoOkCol & COl.Row
            End If
        Next
        
        MsgBox "No OK è presente nelle righe " & NoOkCol
    End Sub
    



  • di gargiu data: 24/09/2014 12:42:52

    Ciao gdito,
    innanzitutto grazie per il tuo interesse.

    In riferimento alla soluzione che mi hai suggerito, il tuo codice lo hai inserito nell'evento Workbook_Open. Io invece vorrei usarlo nell'evento "Initialize" della UserForm di riferimento.

    Ho comunque provato il tuo codice inserendolo nell'evento "Initialize" della UserForm di riferimento, e provato anche nell'evento Workbook_Open.
    La MsgBox mi appare sempre, sia quando la condizione é "OK" oppure "No OK", ma in entrambi i casi non mi elenca le righe in cui trova la condizione di riferimento.
    Non so questo a cosa é dovuto.
    Tu hai qualche idea?

    Grazie ancora.



  • di gargiu data: 24/09/2014 13:53:27

    Rettifico... Funziona.
    Ho corretto alcune info che non erano conforme alla mia situazione.

    Tutto funziona.

    Grazie per la soffiata



  • di gargiu data: 24/09/2014 13:54:13

    Problema risolto!



  • di gdito data: 24/09/2014 13:54:39

    Di nulla... mi hai fatto preoccupare, l'avevo testata prima di postarla :)



  • di gargiu data: 24/09/2014 14:02:07

    Alla fine ho utilizzato l'evento "activate" della Userform, nella quale ho dovuto indicare su quale foglio fare la ricerca. Ho inoltre associato il ciclo ad una cella in cui ho inserito la formula "contase" e attivare il ciclo solo se nella cella della formula il valore é maggiore di "0".
    In questo modo, ho l'infomrazione delle scadenze solo se effettivamente é presente un oggetto scaduto, in caso contrario non ricevo nessun messaggio all'avvio della form.

    Scusami se ti ho fatto preoccupare.


     
    Private Sub UserForm_Activate()
    Sheets("scadenze").Activate
        
        Dim NoOkCol
        Dim COl
    If Range("O1") > 0 Then
        For Each COl In Range("G:G")
            If COl.Value = "SCADUTO" Then
                If Len(NoOkCol) > 0 Then
                    NoOkCol = NoOkCol & ", "
                End If
                
                NoOkCol = NoOkCol & COl.Row - 1
            End If
        Next
        
        MsgBox "Attenzione, ci sono degli oggetti scaduti, verifica le seguenti righe: " & NoOkCol _
        & Chr(10) & "", vbCritical, Title:="Oggetti Scaduti"
    
      Else
     Exit Sub
    Sheets("MENU").Activate
    End If
    End Sub