aggiungere istruzioni ad una macro



  • aggiungere istruzioni ad una macro
    di lucio (utente non iscritto) data: 15/09/2013 17:52:18

    Buondi'

    Ho creato una macro che mentre scrivo sul foglio dei numeri mi dice quando a trovato una coppia di numeri dove il primo e = a 7 e il secondo e >= 8, ora pero' non riesco a dirle di contarmi quelle coppie senza considerare tutti i numeri inferiori al 7
    ess. 7 8 7 9 7 11 sono 3 coppie
    ma se io faccio 7 5 8 5 6 7 5 5 9 6 6 5 7 5 11 dovrebbero essere 3 coppie lo stesso ma non mi da nulla

    come risolvo ?



  • di Vecchio Frac data: 15/09/2013 18:55:10

    1) abbi pazienza quando invii una discussione o una risposta, non cliccare due volte su invia; il server elabora tutti i messaggi e li visualizza in ordine (ho eliminato il messaggio doppio)
    2) si capisce molto poco della descrizione del problema e del risultato da ottenere (punteggiatura, sintassi, ecc.)
    3) nell'esempio che hai fatto, data la sequenza di numeri, stando alle regole della premessa, ci sono solo due coppie il cui primo numero è 7; ma non rispettano la seconda condizione per cui il secondo numero deve essere maggiore o uguale a 8
    4) vediamo la macro, perchè lo scenario non è descritto (scrivi i numeri sul foglio e poi lanci l'elaborazione? si elabora mentre digiti?)





  • di lucio (utente non iscritto) data: 16/09/2013 04:05:01

    Caro Vecchio Frac
    intanto grazie per la risposta imminente.
    Porgo le mie scuse Il fatto di mandare 2 volte la discussione e stata puramente involontaria.

    Si in effetti non son stato molto chiaro nella discussione precedente, ma al momento ho risolto per fortuna .
    Se posso pero', avrei un altro problema,e non riesco ad arrivarne a capo!

    Come vedrai nella macro ho creato un ciclo che mi conta cella per cella a partire da A,2 sino a U,2 per poi andare a capo e cosi via e ho "nominato" le celle da A,1 sino a U,1
    con i numeri da 1 a 21
    e coloro la colonna V di un colore qualsiasi

    Dunque,la macro si elabora da sola mentre digito e vorrei dirle di contare ed avvisarmi quando si verifica una situazione per 3 volte consecutivamente.
    La situazione e questa :(
    8 9 9 8 9 9 8 9 9 9 8 9 10 9 9 8
    come vedi partendo dal primo 8 si e' verificato per 3 volte che in mezzo ai numeri 8 non ci sia stato un 10
    ti mando la mia macro
    Spero di non essere completamente fuori pista
     
    Sub trova10no()
      Dim Riga As Integer
      Dim Col As Integer
      Dim Cella As Integer
      Dim trova10no As Double
      Dim CellaDopo As Integer
      Dim CellaPrima As Integer
      Dim Scarto As Double
      Dim Trovata As Boolean
      Dim Contatrova10no  As Integer
      Dim UltimaRiga As Integer
       
      
    Trovata = False
    
    
    If cells(2, 1) = "" Then
             
            UltimaRiga = 2
        Else
            
           UltimaRiga = ActiveSheet.Range("A1").End(xlDown).Row
        End If
    
    
    For Riga = 2 To UltimaRiga
        For Col = 1 To 21 'colonna U
             Cella = cells(Riga, Col).Value
             
            If Col = 1 Then
                     CellaPrima = cells(Riga - 1, 21)
                     CellaDopo = cells(Riga, Col + 1)
                       
            ElseIf Col = 21 Then
                      CellaPrima = cells(Riga, Col - 1)
                      CellaDopo = cells(Riga + 1, 1)
                        
            Else
                     CellaPrima = cells(Riga, Col - 1)
                     CellaDopo = cells(Riga, Col + 1)
                     
            End If
            
             
              
                 If (CellaPrima = 8 And cells = 10 And CellaDopo = 8) Then
                        Trovata = False
                        trova10no = 0
                
            
               ElseIf (CellaPrima = 8 And cells = 9 And CellaDopo = 8) Then
                        Trovata = True
                        Contatrova10no  = Contatrova10no  + 1
                         
                         
                        If Contatrova10no = 3 Then
                                cells(Riga, Col).Interior.Color = RGB(0, 255, 255)
                                cells(Riga, 22) = cells(Riga, 22) + Contatrova10no
                                 Contatrova10no = 0
                                 If CellaDopo = Empty Then
                                           MsgBox "  10 no = 3"
                                End If
                         End If
              
                Else
                        Trovata = False
                End If
       
        Next Col
    Next Riga
    End Sub
    


  • info
    di lucio (utente non iscritto) data: 16/09/2013 17:26:46

    P.S. Cosa significa quando la data , il nick name e la scritta che dice se sei registrato o meno nell'elenco delle risposte e' di colore rosso?



  • di lucio (utente non iscritto) data: 17/09/2013 15:27:12

    Va be' grazie di tutto



  • di Vecchio Frac data: 17/09/2013 16:04:54

    Il colore rosso nell'elenco delle risposte indica che si tratta di una ruisposta pervenuta in data odierna.
    Così balzano subito all'occhio le discussioni di oggi.
    Infatti le risposte dei giorni precedenti sono tutte di colore normale.

    Una considerazione ancora.
    Hai spuntato come risolta, ma non mi sembra che la discussione sia stata risolta.
    Devi darci il tempo per dedicarci, non possiamo seguire tutto e soprattutto non in tempo reale ^_^
    Non scoraggiarti se non ricevi risposte immediate; piuttosto segnala cortesemente che attendi ancora una risposta.





  • di Vecchio Frac data: 17/09/2013 16:07:41

    cit. "ma al momento ho risolto per fortuna . "
    ---> E in quel punto come avresti risolto? magari serve a qualcun altro.

    cit. "Spero di non essere completamente fuori pista"
    ---> Ma per fare cosa? io ancora non ho capito lo scenario e il nuovo problema.





  • di lucio (utente non iscritto) data: 17/09/2013 17:04:12

    Ok grazie, messaggio ricevuto,pensavo di non ricevere piu' alcuna risp,ma se e' cosi' ci mancherebbe altro,giustamente ogni cosa a suo tempo,e il tempo e sempre poco!!! ora mando lo scenario



  • di lucio (utente non iscritto) data: 17/09/2013 18:23:01

    Come vedi lavoro solo sulle celle da A sino a U e nella riga 1 scrivo numeri da 1 a 21 che appunto termina nella cella U,1 .
    Questa e' l'impostazione che ho dato al mio foglio di lavoro.
    Dalla riga 2 in poi inserisco i dati che mi interessa che la macro analizzi.
    La macro funzionera' con MsgBox che mi avvisera' in automatico quando si presenta la situazione nell'esempio sottostante,
    e cioe' che tra gli 8 che sono contenuti dalle celle A,2 D,2 H,2 J,2 ,non e' presente un numero pari a 10 ma solo dei numeri pari a 9.
    quindi si e' presentata una situazione dove per tre volte consecutive tra i numeri 8 non c'e' alcun numero 10 per tanto la macro mi segnalera' con MsgBox quando inseriro' l'ultimo numero 8 interessato che nell'esempio e' quello in cella J,2.
    Quando dico fuori pista intendo che forse la macro e' completamente sbagliata(Conteggio delle celle a parte).
    Non riesco propio a capire dove sbaglio.

    Al piu' presto mandero' il messaggio di aggiornamento della prima discussione che ho aperto,dove non ho trovato una vera e propria soluzione ma,mi sono accorto che quello che mi interessava in realta' era altro e son riuscito a creare la macro senza problemi.


     
           A  -  B  -  C  -  D  -  E  -  F  -  G  -  H  -  I  -  J  -  K  -  L  -  M  -  N  -  O  -  P  -  Q  -  R  -  S  -  T  -  U  -  V  -  ECC.
    1-   1  -  2  -  3  -   4  -  5  -  6  -  7  -  8  -  9  - 10 - 11 - 12 - 13  - 14  - 15  - 16 - 17  - 18  - 19 - 20 - 21 -       -
    2- 8    - 9   - 9   - 8    - 9   - 9   - 9   - 8   - 9   - 8   - 9   - 9  - 10  - 9   - 8    -     -      -       -     -     -     -       -
    3-
    4-
    5-
    6- 
    
    



  • di lucio (utente non iscritto) data: 17/09/2013 18:31:13

    La V e' andata sotto quando ho inviato il mess in realta' ovviamente sarebbe la colonna V che avevo messo dopo la U
    Anche i trattini se ne sono andati un po'' per i fatti loro se non capisci provo a mandarne un'altra.
    Ho provato a inserire con copia,incolla una griglia gia fatta nei riquadri ma me li mette tutti in verticale.



  • di Vecchio Frac data: 17/09/2013 18:58:24

    Ora credo di aver capito qualcosa in più, formattazione a parte che è comunque un problema anche per me quando occorre ^_^
    La macro ti deve segnalare quante volte nella riga considerata, tra un otto e il successivo, non compare il numero dieci. Possibilmente ti deve dire anche per quante volte consecutive ciò si verifica.
    E' così?





  • di lucio (utente non iscritto) data: 17/09/2013 21:42:57

    Si esattamente! GRANDISSIMO
    non e pero' necessario che mi dica sempre quante volte succede,
    ma solo ogni qualvolta succede 3 volte di seguito (in sequenza)
    L'esempio che ho mandato e' infatti una sequenza di 3 volte.
    La macro che ho fatto io se e' come penso, sara' solo da ritoccare un po',
    almeno spero

    grazie



  • di lucio (utente non iscritto) data: 18/09/2013 23:58:23

    Buona sera
    Nella prima discussione aperta,quello che in realta' mi interessava trovare,erano i
    7 DISCRETI
    Cioe' mentre scrivo su un foglio, (tenendo conto che l'impostazione di quest'ultimo e quella data dall'esempio postato in precedenza),dei numeri interi da 1 in su' , inserendone uno per cella una cella dopo l'altra procedendo solo orizzontalmente riga per riga,la macro riconosce solo i numeri 7 senza contare i numeri da 6 in giu'.
    I numeri >= a 8 fermano e fanno ripartire il conteggio dei 7 discreti consecutivi.
    Al momento non posso farvi vedere l'esempio perche' non ho i dati a portata di mano.



  • di lucio (utente non iscritto) data: 20/09/2013 18:05:52

    Nella macro che ho inviato,di sicuro la condizione Cells tra cellaprima e Celladopo
    non centra nulla.
    Come faccio allora a creare una condizione che dice :
    'se trovi un numero di valore x tra 2 celle dello stesso valore x allora conta 1