Controllo casella seguente



  • Controllo casella seguente
    di trump61 data: 04/10/2014 11:52:33

    Ciao vorrei riuscire a controllare se nella casella seguente a quella dove inserisco un dato sia presente la lettera N
    L'Intervallo va da C4 a I36, mi basterebbe che si aprisse una msgbox che mi allertasse della presenza della N, non riesco ad impostare il discorso, avevo pensato di usare Activecell e offset ma non va qualcuno può suggerirmi un altro modo?
    Grazie


  • eseguire macro con più workbook aperti
    di pasquale1959 (utente non iscritto) data: 04/10/2014 11:54:58

    buongiorno a tutti,
    ho due macro che vengono eseguite regolarmente ogni "X" periodo su di un file excel( file A) e contemporaneamente lavoro su un'altro file excel (file B). Il Tutto funziona bene tranne per il fatto che quando si attiva la macro windows mi riporta inesorabilmente sul file A, interrompendo il lavoro su B. Questo alla lunga scoccia ......... chiedevo se esiste la possibilita di poter evitare questo, cioè di poter continuare a lavorare sul secondo file senza essere riportato su quello della macro.

    grazie



  • di trump61 data: 04/10/2014 12:04:30

    Scusate avevo fato un errore da vero principiante quale sono.
    per il secondo post credo che hai sbagliato dove scrivere la tua domanda



  • di Zer0Kelvin data: 04/10/2014 12:11:24

    Ciao.
    ______________________________________________________________________________
    *Cit: Trump61*
    avevo pensato di usare Activecell e offset ma non va qualcuno può suggerirmi un altro modo?
    ______________________________________________________________________________

    Ma, benedetto uomo, perchè non hai allegato il codice che hai scritto, in modo da poter capire dov'è l'errore?
    Il metodo offset è esattamente quello che serve, ma che c'entra Activecell?
    Il codice da eseguire andrebbe inserito in Worksheet_Change (?); in tal caso, la cella modificata è nel parametro target.
    Potrei limitarmi a scrivere le poche righe di codice necessarie, ma penso ti sarà più utile vedere dove hai sbagliato.

    PS @pasquale1959; ti sei accodato al post di un altro utente; devi aprirne uno nuovo cliccando [Nuova discussione] nell'indice del forum.



  • di Zer0Kelvin data: 04/10/2014 12:12:44

    Allora hai risolto?



  • di trump61 data: 04/10/2014 12:51:59

    Ciao non ho risolto, l'ho creduto per qualche minuto.
    questo è il codice che avevo pensato.
    lo faccio richiamare Worksheet SelectionChange del foglio dove mi serve che intervenga
    chiamando la routine con
    Application.Run "Prototipo.xlsm!controllanotte"
    il problema è che quando vado a controllare le celle se è presente la N va bene ma se non c'è e passa agli If seguenti cioè:
    ActiveCell.Offset(1, -6) e ActiveCell.Offset(1, -7) se ad esempio clikko sulla cella D6 Ricordo che l' intervallo è B36 :I36 va in errore perchè chiaramente Offset(1, -6) o Offset(1, -7)non esiste ho pensato di inserire l'intercettatore di errore On Error Resume Next ma utilizzando questo ovunque clikko mi apre la finestra che mi dice di fare attenzine....... anche se non è vero
    dove sbaglio?
     
    Sub controllanotte()
    'On Error Resume Next
    If ActiveCell.Offset(0, 1) = "N" Then
    MsgBox " Attenzione il giorno seguente è una Notte "
    Else
    If ActiveCell.Offset(1, -6) = "N" Then
    MsgBox " Attenzione il giorno seguente è una Notte "
    Else
    If ActiveCell.Offset(1, -7) = "N" Then
    MsgBox " Attenzione il giorno seguente è una Notte "
    End If
    End If
    End If
    'Resume
    End Sub
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Range("A3") = "" Then Exit Sub
    
    Dim T, G, X, Y, B, J 'Mattina
    Dim S, Q, R, F 'Notte
    Dim Z, K, W, A 'Pomerigio
    
    For col = 3 To 9
      T = 0                                            ' Inizio Mattina
      For Each X In Range(Cells(4, col), Cells(11, col))
        If Right(X.Text, 1) = "M" Or Left(X.Text, 1) = "M" Then T = T + 1
      Next
      G = 0
      For Each Y In Range(Cells(17, col), Cells(36, col))
        If Right(Y.Text, 1) = "M" Or Left(Y.Text, 1) = "M" Then G = G + 1
      Next
      B = 0
      For Each J In Range(Cells(4, col), Cells(36, col))
        If J = "Ma" Then B = B + 1
      Next
      Cells(45, col) = G + T - B 'Fine Mattina
      Z = 0                    ' Inizio Pomeriggio
      For Each K In Range(Cells(4, col), Cells(11, col))
        If Right(K.Text, 1) = "P" Or Left(K.Text, 1) = "P" Then Z = Z + 1
      Next
      W = 0
      For Each A In Range(Cells(17, col), Cells(36, col))
        If Right(A.Text, 1) = "P" Or Left(A.Text, 1) = "P" Then W = W + 1
      Next
      Cells(46, col) = Z + W         ' Fine pomeriggio
      S = 0                         ' inizio notte
      For Each Q In Range(Cells(4, col), Cells(11, col))
        If Right(Q.Text, 1) = "N" Or Left(Q.Text, 1) = "N" Then S = S + 1
      Next
      R = 0
      For Each F In Range(Cells(17, col), Cells(36, col))
        If Right(F.Text, 1) = "N" Or Left(F.Text, 1) = "N" Then R = R + 1
      Next
      Cells(44, col) = S + R
    Next
    
    Application.Run "Prototipo.xlsm!A"
    Application.Run "Prototipo.xlsm!controllanotte"
    End Sub
    
    
    
    



  • di Raffaele_53 (utente non iscritto) data: 04/10/2014 13:12:25

    Potresti allegare un esempio di file?



  • di trump61 data: 04/10/2014 13:44:22

    Ciao,In pratica devo essere avvisato che quando clikko su una cella e il turno successivo è una N cioè notte, mi si complica quando clikko sulla domenica e dovo controllare il lunedì della settimana successiva. perche' quando vado a clikkare su una cella esempio E8 e nella successiva non è presente la N mi va in debug a causa credo dell' offset -6 in quanto non ci sono 6 colonne prima della colonna E
     
    'On Error Resume Next
    If ActiveCell.Offset(0, 1) = "N" Then
    MsgBox " Attenzione il giorno seguente è una Notte "
    Else
    If ActiveCell.Offset(1, -6) = "N" Then
    MsgBox " Attenzione il giorno seguente è una Notte "
    Else
    If ActiveCell.Offset(0, -1) = "N" Then
    MsgBox " Attenzione il giorno seguente è una Notte "
    End If
    End If
    End If
    'Resume



  • di trump61 data: 04/10/2014 13:45:36

    Scusate avevo salvato il codice senza codice



  • di Raffaele_53 (utente non iscritto) data: 04/10/2014 14:27:55

    Questo è un' esempio se ho capito

    Più sotto altro esempio di quello che c'era nel forum
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Not Intersect(Target, Range("C4:I36")) Is Nothing Then 'controlla il range
        Dim X As Long, Y As Long
        X = Target.Offset(0, 0).Row ' successiva nella riga a destra Target.Offset(0, 1)ma sopra sara Range("C4:H36")
        Y = Target.Offset(0, 0).Column ' successiva nella riga sotto Target.Offset(1, 0)ma sopra sara Range("C4:I35")
            If Cells(X, Y) = "N" Then
                MsgBox " Attenzione il giorno seguente è una Notte "
            ElseIf Cells(X, Y) = "M" Then
                MsgBox " Attenzione il giorno seguente è una Mattina "
            ElseIf Cells(X, Y) = "P" Then
                MsgBox " Attenzione il giorno seguente è una Pomerigio "
            ElseIf Cells(X, Y) = "E" Then
                MsgBox " Attenzione il giorno seguente è ???"
            ElseIf Cells(X, Y) = "E2" Then
                MsgBox " Attenzione il giorno seguente è ??????? "
            ElseIf Cells(X, Y) = "M1" Then
                MsgBox " Attenzione il giorno seguente è ??????? "
            'aggiungere altre opzioni
            End If
        End If
    End Sub
    
    Private Sub Worksheet_SelectionChange(ByVal target As Range)
    If Range("A3") = "" Then Exit Sub
    Dim T, G, X, Y, B, J 'Mattina
    Dim S, Q, R, F 'Notte
    Dim Z, K, W, A 'Pomerigio
    For col = 3 To 9
      For Each X In Range(Cells(4, col), Cells(36, col))
        If X = "Ma" Then B = B + 1
      Next
      For Each X In Range(Cells(4, col), Cells(11, col))
        If Right(X.Text, 1) = "M" Or Left(X.Text, 1) = "M" Then T = T + 1
        If Right(X.Text, 1) = "P" Or Left(X.Text, 1) = "P" Then Z = Z + 1
        If Right(X.Text, 1) = "N" Or Left(X.Text, 1) = "N" Then S = S + 1
        If J = "Ma" Then B = B + 1
      Next
      For Each Y In Range(Cells(17, col), Cells(36, col))
        If Right(Y.Text, 1) = "M" Or Left(Y.Text, 1) = "M" Then G = G + 1
        If Right(Y.Text, 1) = "P" Or Left(Y.Text, 1) = "P" Then W = W + 1
        If Right(Y.Text, 1) = "N" Or Left(Y.Text, 1) = "N" Then R = R + 1
      Next
      Cells(44, col) = S + R
      Cells(45, col) = G + T - B 'Fine Mattina
      Cells(46, col) = Z + W
    Next
    'Application.Run "Prototipo.xlsm!A"
    'Application.Run "Prototipo.xlsm!controllanotte"
    End Sub
    
    



  • di trump61 data: 04/10/2014 15:12:27

    Ciao,ho modificato il codice come servirebbe a me, purtroppo da lo stesso errore. devo controllare che nel turno che inserisco il giorno dopo non ci sia la notte, quando vado a farlo nella colonna "I"che contiene i turni di Domenica il controllo lo deve fare su la riga sotto nella colonna "C" per puntare quella cella devo mettere offset(0, -6) tutto funziona come ho scritto prima fino a quando non clicco ad esempi su una cella della Colonna "E" e la cella seguente non contiene le lettera N mi va in errore.
    nel codice ci sono i tre controlli che mi servono.
    se provo a mettere 2 On Error Resume Next " ogni cella dove clikko mi dice che la successiva contiene la Notte.
    Vorrei chiedervi posso puntare "On Error Resume Next" soltanto su" ElseIf Cells(X, Y).Offset(1, -6) = "N" Then
    MsgBox " Attenzione il giorno seguente è una Notte "" puntando la gestione di errore solo su questa parte di codice, altrimenti devo escogitare un altro modo che per ora non ho in mente
    Scusate per la mia ignoranza
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
        If Not Intersect(Target, Range("B4:I36")) Is Nothing Then 'controlla il range
        Dim X As Long, Y As Long
        X = Target.Offset(0, 0).Row ' successiva nella riga a destra Target.Offset(0, 1)ma sopra sara Range("C4:H36")
        Y = Target.Offset(0, 0).Column ' successiva nella riga sotto Target.Offset(1, 0)ma sopra sara Range("C4:I35")
            If Cells(X, Y).Offset(0, 1) = "N" Then
                MsgBox " Attenzione il giorno seguente è una Notte "
            ElseIf Cells(X, Y).Offset(1, -6) = "N" Then
                MsgBox " Attenzione il giorno seguente è una Notte "
            ElseIf Cells(X, Y).Offset(0, -1) = "N" Then
                MsgBox " Attenzione il giorno seguente è una Notte "
           
            'aggiungere altre opzioni
            End If
        End If
        
    End Sub
    



  • di trump61 data: 04/10/2014 15:33:04

    Grazie a tutti ho risolto, ho sostituito Y con 9 che è il numero della colonna che in quello specifico caso devo puntare
     
    If Not Intersect(Target, Range("B4:I36")) Is Nothing Then 'controlla il range
        Dim X As Long, Y As Long
        X = Target.Offset(0, 0).Row ' successiva nella riga a destra Target.Offset(0, 1)ma sopra sara Range("C4:H36")
        Y = Target.Offset(0, 0).Column ' successiva nella riga sotto Target.Offset(1, 0)ma sopra sara Range("C4:I35")
               If Cells(X, Y).Offset(0, 1) = "N" Then
                MsgBox " Attenzione il giorno seguente è una Notte "
            ElseIf Cells(X, 9).Offset(1, -6) = "N" Then
                MsgBox " Attenzione il giorno seguente è una Notte "
            ElseIf Cells(X, Y).Offset(0, -1) = "N" Then
                MsgBox " Attenzione il giorno prima  è una Notte "
                
           
           
            'aggiungere altre opzioni
            End If
        End If



  • di trump61 data: 04/10/2014 15:56:14

    Scusate so proprio una schiappa, ma perche soltanto sulla riga 10 dove clikko clikko mi dice che la casella successiva c'è a notte?



  • di trump61 data: 04/10/2014 16:52:56

    anche nella riga 24 e 28 non riesco a capire perchè



  • di Raffaele_53 (utente non iscritto) data: 04/10/2014 18:39:31

    Sperando d'aver capito? In poche parole Range("C4:I36")

    Se clicchi sulle colonne C:H il codice legge la cella a destra e se c'è scritto N appare il Msg
    Se clicchi sulla colonna I il codice legge la prima cella della riga successiva colonna C e se c'è scritto N appare il Msg
    Se clicchi sulla cella I:36 appare il msg "Fine archivio"
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Not Intersect(Target, Range("C4:I36")) Is Nothing Then 'controlla il range
        Dim X As Long, Y As Long
        X = Target.Offset(0, 0).Row
        Y = Target.Offset(0, 0).Column
            If Y < 9 And X < 36 Then
                If Cells(X, Y + 1) = "N" Then
                    MsgBox " Attenzione il giorno seguente è una Notte "
                End If
            ElseIf Y = 9 And X < 36 Then
                If Cells(X + 1, 3) = "N" Then
                    MsgBox " Attenzione il giorno seguente è una Notte "
                End If
            ElseIf Y = 9 And X = 36 Then
                    MsgBox " Arrivati a fine archivio "
            End If
        End If
    End Sub



  • di trump61 data: 04/10/2014 19:18:22

    Ciao scusa me lo puoi spiegare perchè non l'ho capito,
    in effetti manca un passaggio avrei voluto inserirlo da solo ma non ci riesco
    l'ultimo controllo sarebbe se nella colonna B c'e una notte,
    Grazie



  • di trump61 data: 04/10/2014 20:05:17

    Ciao sono sempre io,
    Ho inserito una riga del codice che avevo prima
    ElseIf Cells(X, Y).Offset(0, -1) = "N" Then
    MsgBox " Attenzione il giorno prima è una Notte "
    End If
    in quello suggeritomi da Raffaele_53 ma non va
    allora credo di aver capito Male
    questa parte
    If Not Intersect(Target, Range("C4:I36")) Is Nothing Then 'controlla il range
    Dim X As Long, Y As Long
    X = Target.Offset(0, 0).Row
    Y = Target.Offset(0, 0).Column
    se io seleziono una cella quella prende Cells(X, Y) se io la sposto con offset(0, 1) va a spostarse nella stessa riga colonna precedente, o sto dicendo una grossa stupidaggine?
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
         If Not Intersect(Target, Range("C4:I36")) Is Nothing Then 'controlla il range
        Dim X As Long, Y As Long
        X = Target.Offset(0, 0).Row
        Y = Target.Offset(0, 0).Column
            If Y < 9 And X < 37 Then
                If Left(Cells(X, Y + 1), 1) = "N" Then
                    MsgBox " Attenzione il giorno seguente è una Notte "
                End If
            ElseIf Y = 9 And X < 37 Then
                If Left(Cells(X + 1, 3), 1) = "N" Then
                    MsgBox " Attenzione il giorno seguente è una Notte "
             End If
              ElseIf Cells(X, Y).Offset(0, -1) = "N" Then
                MsgBox " Attenzione il giorno prima  è una Notte "
            End If
              
            End If
           End If
               
    
        
    End Sub
    



  • di Raffaele_53 (utente non iscritto) data: 04/10/2014 20:42:50

    Non sei stato molto chiaro sinora.Fai un esempio sulla prima riga
    Clicchi in B4 e deve vedere C4?
    Clicchi in C4 e deve vedere D4?
    ....
    ....
    Clicchi in I9 e deve vedere B5?
    Giusto cosi?

    Perchè hai messo 37? Se clicchi in I36 cosa succede



  • di Raffaele_53 (utente non iscritto) data: 04/10/2014 20:43:53

    >>>Clicchi in I9 e deve vedere B5?
    Clicchi in I4 e deve vedere B5? giusto cosi?



  • di Raffaele_53 (utente non iscritto) data: 04/10/2014 21:07:42

    >>>L'Intervallo va da C4 a I36,
    Range("C4:I36")

    >>>se io la sposto con offset(0, 1) va a spostarse nella stessa riga colonna precedente
    Casomai colonna dopo, oppure -1

    >>>mi si complica quando clikko sulla domenica e dovo controllare il lunedì della settimana successiva
    Io vedo solo una settimana, dove sarebbe la settimana successiva (oppure volevi dire la riga dopo come ho fatto io)

    Forse non sono riuscito a capire il post, prova questa
     
    Private Sub Worksheet_SelectionChange2(ByVal Target As Range)
        If Not Intersect(Target, Range("C4:I36")) Is Nothing Then 'controlla il range
        Dim X As Long, Y As Long
        X = Target.Offset(0, 0).Row
        Y = Target.Offset(0, 0).Column
            If Y < 9 And X < 36 Then
                If Cells(X, Y + 1) = "N" Then MsgBox " Attenzione il giorno seguente è una Notte "
            ElseIf Cells(X, 2) = "N" Then MsgBox " Attenzione in colonna B c'è Notte "'verifica colonna B
            ElseIf Y = 9 And X < 36 Then
                If Cells(X + 1, 3) = "N" Then MsgBox " Attenzione il giorno seguente è una Notte "
            ElseIf Y = 9 And X = 36 Then
                    MsgBox " non posso fare nulla, non so quale cella controllare???"
            End If
        End If
    End Sub



  • di trump61 data: 05/10/2014 01:09:57

    Scusa ma sono dovuto uscire. ora mi rimetto a lavoro



  • di trump61 data: 05/10/2014 01:12:53

    Prima risposta: se non mettevo" I37" non mi effettuava i controllo sull' ultima riga



  • di trump61 (utente non iscritto) data: 05/10/2014 01:37:45

    Il motivo del controllo è che non posso far capitare il Pomeriggio prima della Notte, perchè noi iniziamo il turno di notte alle 22,10 de giorno precedente, cioè se sul foglio il turno di notte è martedì il turno inizia lunedì alle 22.30 quindi prima della notte non possiamo fare il pomeriggio, tu dirai basta fare attenzione, hai anche ragione ma mi capita spesso di dover fare tutto in fretta e mi sbaglio proprio in questa situazione. per questo sto cercando di mettere qualcosa che mi allerti quando potrebbe verificarsi questa combinazione di turni, questo accade perchè siamo sotto organico e devo prevedere doppi turni per avere un numero di persone sufficienti, qui non posso mettere ad esempio P + N + M se no mi arrestano giustamente ah ah ah ah.la colonna di turni in "B" è il turno che ogni agente svolge la Domenica prima, quindi devo controllare che prima della notte di lunedì non ci sia il pomeriggio di domenica, adesso tu dirai questo è scemo e hai pienamente ragione, perchè io erroneamente sto cercando la notte nella colonna B, non è che non me ne sono accorto, è che ho detto lo modifico dopo.
    nel codice sempliciotto che avevo postato questo lo faceva nel tuo che stilisticamente è di un altra categoria, che non riesco interpretare, non riesco a scrivere la riga che fa cio'.
    Quindi veniamo a bomba, le prime due parti cioè controllare che la cella stessa riga colonna dopo sia N lo fa il tuo codice.
    parte due controllare se in un cella dell' ultima colonna cioè la "I" va a controllare la cella in colonna "C" riga successiva lo fa, ora devo provare il tuo ultimo codice m il terzo controllo deve essere che le celle in colonna C dove compare "N" nella colonna "B" sulla stessa riga non deve essere "P" spero di essere stato chiaro.
    Ultima richiesta se puoi mi puoi spiegare come hai ragionato per arrivare a questo codice ?
    Grazie per il tuo aiuto



  • di Raffaele_53 (utente non iscritto) data: 05/10/2014 18:03:44

    Successiva & Precedente? Pensavo alla cella successiva a destra, quando in colonna I pensavo alla riga dopo in colonna C.
    >>>MsgBox " Attenzione il giorno seguente è una Notte ". Questa frase mi ha tratto in inganno.

    >>>la colonna di turni in "B" è il turno che ogni agente svolge la Domenica prima
    OK, pertanto ritorniamo al range ("C4:I36")
    Quindi, se in B4 c'è N e io digito N in C4, mi deve avvisare che il giorno prima ha fatto la notte.
    Lo stesso per tutte le colonne sino alla colonna I (perchè legge alla sinistra e non a destra)

    Ps l'ultimo allegato di prova, aveva la sub con un 2 finale (toglilo)
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("C4:I36")) Is Nothing Then
    X = Target.Offset(0, 0).Row ' ricavo la riga dove premuto/modificato
    Y = Target.Offset(0, 0).Column ' ricavo la colonna dove premuto/modificato
        If Cells(X, Y - 1) = "N" Then
            MsgBox " Attenzione il giorno PRECEDENTE è una Notte "
        End If
    End If
    End Sub



  • di trump61 data: 06/10/2014 12:24:57

    Ciao Raffaele_53, in primis ti devo ringraziare per la tua disponibilità, e non è la prima volta. Non riesco a spiegarmi bene, dalla colonna C alla colonna I è il turno settimanale che si deve svolgere, la colonna B mi serve perchè per esigenze di servizio o per esigenze del personale prima dell' inizio della settimana devo modificare i turni quindi nella colonna B mi faccio comparire il turno della domenica precedente tutto il reparto, questo per non creare una combinazioni di turno irregolare. mi serve che mi avverte durante la settimana che se vado a modificare un turno il giorno seguente non sia una notte perchè non posso mettere P se il giorno dopo è una Notte. Se devo cambiare un turno di lunedì devo sapere la domenica precedente che turno faceva il titolare del turno che vado a modificare, che non deve essere un P se metto una Notte il lunedì(qui ti ho dato un 'informazione sbagliata, ma bastava mettere una P al Posto della N) ultimo controllo e quello della Domenica che sta in colonna I rispetto al lunedì in colonna C ma una riga sotto perchè essendo un turno a scalare il lunedì della riga sotto è il turno della settimana successiva dell' agente a cui devo modificare il turno della domenica



  • di Raffaele_53 (utente non iscritto) data: 06/10/2014 19:02:29

    Mi sono riletto tutto il post e non ancora sicuro d'aver capito bene.Riproviamo

    A)Non dovresti usare Worksheet_SelectionChange(ByVal Target As Range) 'perchè interviene appena Ti posizioni su una cella
    Devi usare Worksheet_Change(ByVal Target As Range)' questo interviene quando esci dalla cella

    B) è che non posso far capitare il Pomeriggio prima della Notte
    Significa che quando digiterai in una cella la P=Pomeriggio, il codice deve verificare che la cella a destra non ci sia scritto N

    Cerco di spiegare il codice
    Solo quando digito la lettera P, devi fare ulteriori controllo qui sotto
    Sei in colonne dalla 3 alla 8, deve controllare la cella a destra se c'è scritto N
    ElseIf quando sei in colonna 9, deve controllare la cella in colonna C della riga sotto se c'è scritto N
    ElseIF quando sei in riga 36 e colonna 9, Non puoi controllare nulla dato che la riga 37 e vuota, appare solo Msgbox = fine tabella

    >>>Elseif perchè delle varie opzioni deve eseguirne una sola
    Ps. Se non ho ancora capito bene, dovrai fare un esempio più realistico su un'interra riga
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("C4:I36")) Is Nothing Then 'controlla il range
        Dim X As Long, Y As Long
        R = Target.Offset(0, 0).Row
        C = Target.Offset(0, 0).Column
            If Cells(R, C) = "P" Or Cells(R, C) = "P" Then
                If C < 9 And R < 36 Then
                    If Target.Offset(0, 1) = "N" Then MsgBox " Attenzione il giorno seguente è una Notte "
                ElseIf C = 9 And R < 36 Then
                    If Target.Offset(1, -7) = "N" Then MsgBox " Attenzione il giorno seguente è una Notte "
                ElseIf C = 9 And R = 36 Then MsgBox " Fine tabella"
                'aggiungere altre opzioni
                End If
            End If
            'Qui puoi aggiungere altri criteri casomai nella Cells(R, C)scrivi qualcosa di differente da P
    End If
    End Sub



  • di Raffaele_53 (utente non iscritto) data: 06/10/2014 19:03:58

    >>> la cella in colonna C
    la cella in colonna B



  • di trump61 data: 08/10/2014 14:39:51

    Ciao, scusa sono tornato ora da un corso di aggiornamento ora do un occhiata e ti faccio sapere come è andato il codice