errore primanota



  • errore primanota
    di Marco31 (utente non iscritto) data: 22/07/2017 19:15:05

    salve ho scaricato un programma di primanota da internet solo che era per excel 2010, avendo la versione 2003, l'ho salvato con nome per detta versione, solo che adesso mi da un errore quando aggiungo delle righe, qualcuno mi può dare una mano a risolvere il problema? No riesco a capire cosa succede, aggiunge le righe pero quando arriva sulla seguente riga di codice da errore, allego il file, con la speranza che qualcuno mi dia una mano a risolvere il problema.
    Grazie.

     
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority



  • di patel data: 23/07/2017 08:39:50

    prova ad aggiungere un apice all'inizio della riga
     
    ' Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority






  • di Marco31 (utente non iscritto) data: 23/07/2017 11:51:27

    grazie patel per aver risposto, ho messo l'apice al rigo di codice, solo che adesso da errore un altro rigo di codice,
    comunque allego la Sub inseriscirighe.

     
     .TintAndShade = 0        da errore
    
    Sub inseriscirighe()
    '
    ' Cerca un contenuto in una cella e poi aggiunge 5 righe sopra questa cella
    '
    ' Toglie la protezione al foglio
    ' Sheets("PrimaNota").Unprotect Password:=""
        
    For x = 1 To 5
        Columns("A:A").Select
        Range("A1").Activate
        Selection.Find(What:="Saldi finali", After:=ActiveCell, LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False).Activate
        riga = ActiveCell.Row
        'riga = riga - 1
        Range(Cells(riga, 1), Cells(riga, 1)).Activate
        ActiveCell.EntireRow.Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        rigaorig = riga + 1
        Range("n4").Select
        Selection.Copy
        Range(Cells(riga, 7), Cells(riga, 7)).Select
        ActiveSheet.Paste
        Range("n3").Select
        Selection.Copy
        Range(Cells(riga, 10), Cells(riga, 10)).Select
        ActiveSheet.Paste
    Next x
    ' Protegge il foglio
    ' Sheets("PrimaNota").Protect Password:=""
    
    ' Elimina la formattazione condizionale perche nella copia si replicavano le regole
    Cells.FormatConditions.Delete
    
    ' Reimposto la formattazione condizionale
    Range(Cells(7, 1), Cells(rigaorig, 10)).Select
    'Range("A5:H17").Select
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=RESTO(RIF.RIGA(A5);2)=0"
    'Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .Color = 15524052
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).StopIfTrue = False
    Range(Cells(rigaorig, 1), Cells(rigaorig, 1)).Select
    
    End Sub



  • di patel data: 23/07/2017 11:54:04

    riga che non mi hai detto, comunque aggiungi un apice all'inizio delle righe che danno errore, io non posso fare di più visto che non ho il 2003





  • di Marco31 (utente non iscritto) data: 23/07/2017 19:08:20

    ho fatto delle prove, ho eliminato le righe di codice che davano errore, e adesso funziona, solo che volevo apportare una modifica e non ho idea di come fare, provo a spiegare, per inserire n° 5 righe si deve premere un pulsante, sarebbe possibile far aggiungere una riga in automatico appena l'ultima riga nella colonna A ci sono inseriti dei dati?
    Spero che si possa fare Allego il codice che funziona.
     
    Sub inseriscirighe() 
    '
    ' Cerca un contenuto in una cella e poi aggiunge 5 righe sopra questa cella
    '
    ' Toglie la protezione al foglio
    ' Sheets("PrimaNota").Unprotect Password:=""
        
    For x = 1 To 1
        Columns("A:A").Select
        Range("A1").Activate
        Selection.Find(What:="Saldi finali", After:=ActiveCell, LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False).Activate
        riga = ActiveCell.Row
        'riga = riga - 1
        Range(Cells(riga, 1), Cells(riga, 1)).Activate
        ActiveCell.EntireRow.Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        rigaorig = riga + 1
        Range("n4").Select
        Selection.Copy
        Range(Cells(riga, 7), Cells(riga, 7)).Select
        ActiveSheet.Paste
        Range("n3").Select
        Selection.Copy
        Range(Cells(riga, 10), Cells(riga, 10)).Select
        ActiveSheet.Paste
    Next x
    
    ' Elimina la formattazione condizionale perche nella copia si replicavano le regole
    Cells.FormatConditions.Delete
    
    ' Reimposto la formattazione condizionale
    Range(Cells(7, 1), Cells(rigaorig, 10)).Select
    
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=RESTO(RIF.RIGA(A5);2)=0"
    
    With Selection.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .Color = xlAutomatic
       
    End With
    
    Range(Cells(rigaorig, 1), Cells(rigaorig, 1)).Select
    
    End Sub



  • di Marco31 (utente non iscritto) data: 24/07/2017 11:25:43

    chiedo scusa qualcuno che sappia come posso risolvere il problema esposto, e mi possa dare una mano, in quanto non sono un esperto di vba. Grazie a tutti



  • di Vecchio Frac data: 24/07/2017 15:08:02

    cit. "ho eliminato le righe di codice che davano errore"
    ---> Va bene, ma bisogna sapersi spiegare il perchè... per esempio TintAndShade è una proprietà dei Range implementata dopo la versione 2003. Per verificarlo basta uno sguardo al visualizzatore oggetti (premere F2 nell'editor di codice e cercare l'oggetto desiderato per vedere a cosa appartiene)





  • di Marco31 (utente non iscritto) data: 24/07/2017 18:58:22

    grazie per la risposta, ho provato a rare la ricerca, ho fatto la catturachermo del risultato, mi dà nessun risultato, dai uno sguardo, non vorrei aver commesso un errore nella ricerca.
    Counque io ho eliminato le righe che davano errore come consigliato da patel. E sembra funzionare tutto, senza errori, ora volevo apportare un altra modifica senza aggingere 5 righe alla volta, se possibile aggiunere una ogni volta che l'ultima riga contiene un dato nella colonna A.



  • di Vecchio Frac data: 24/07/2017 19:23:12

    Ma il codice proposto non aggiunge 5 righe (forse quello originale sì: e forse mi spiego quel For x da 1 a 1 che non ha senso).
    In quale punto del codice deve essere aggiunta la nuova riga? prima della copia e incolla dei valori precedenti o dopo? non è chiaro del tutto il risultato atteso.





  • di Marco31 (utente non iscritto) data: 24/07/2017 20:35:25

    Si il codice originale inseriva n° 5 righe, tramite un pulsante, io volevo modificarlo e far aggiungere una riga solo alla volta, qundo l'ultima riga nella colonna A contiene un valore, appena sposto il cursore nella cella B mi agginge una nuova riga vuota sotto.
    Viene inserita prima la riga e poi la copia dei valori.



  • di Marco31 (utente non iscritto) data: 26/07/2017 12:44:15

    ciao a tutti sto facendo delle prove per poter risolvere il problema.
    Se nel frattempo qualcuno sa come posso risolvere il problemma e mi può dare una mano.
    Grazie a tutti



  • di Vecchio Frac data: 26/07/2017 18:47:03

    Ricordati di inserire Option Explicit in testa ai tuoi moduli e di dichiarare sempre correttamente le variabili che usi.
     
    Sub inserisci_una_riga()
    '
    ' Cerca un contenuto in una cella e poi aggiunge 5 righe sopra questa cella
    '
    ' Toglie la protezione al foglio
    ' Sheets("PrimaNota").Unprotect Password:=""
    Dim c As Range
    Dim riga As Long
    Dim rigaorig As Long
        
        Set c = Range("A:A").Find(What:="Saldi finali", LookIn:=xlFormulas, LookAt:=xlPart, _
            SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False)
        
        If Not (c Is Nothing) Then
            c.Activate
            riga = c.Row
            Cells(c.Row, "A").EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
            rigaorig = riga + 1
            Range("N4").Copy Cells(riga, 7)
            Range("N3").Copy Cells(riga, 10)
        End If
        
        ' Protegge il foglio
        ' Sheets("PrimaNota").Protect Password:=""
        
        ' Elimina la formattazione condizionale perche nella copia si replicavano le regole
        Cells.FormatConditions.Delete
        
        ' Reimposto la formattazione condizionale
        Set c = Range(Cells(7, 1), Cells(rigaorig, 10))
        With c
            .FormatConditions.Add Type:=xlExpression, Formula1:="=RESTO(RIF.RIGA(A5);2)=0"
            .FormatConditions(.FormatConditions.Count).SetFirstPriority
            With .FormatConditions(1).Interior
                .PatternColorIndex = xlAutomatic
                .Color = 15524052
            End With
            .FormatConditions(1).StopIfTrue = False
        End With
        Range(Cells(rigaorig, 1), Cells(rigaorig, 1)).Select
    
    End Sub






  • di Marco31 (utente non iscritto) data: 03/08/2017 20:27:26

    Cia Vecchio Frac, per la risposta, io ho avuto tempo solo adezzo di fare una prova, quando lancio la macro si blocca quando arriva al seguente rigo di codice
    .FormatConditions(.FormatConditions.Count).SetFirstPriority

    dando errore di run-time '438'
    proprietà o metodo non supportato dall'oggetto



  • di Vecchio Frac data: 03/08/2017 21:53:22

    Stesso problema di TintAndShade: probabilmente non è un metodo supportato da versioni precedenti alla 2007. Io non ho più la 2003 e non posso fare la verifica, ma puoi accertartene controllando con il visualizzatore oggetti se la proprietà esiste o meno. Se non c'è puoi tralasciarla e togliere l'istruzione.





  • di Marco31 (utente non iscritto) data: 04/08/2017 11:48:06

    Ho controllato eliminando i seguenti 2 righe di codice funziona solo che c'è un problema.
    Righe eliminate
    '.FormatConditions(.FormatConditions.Count).SetFirstPriority
    '.FormatConditions(1).StopIfTrue = False
    Problema riscontrato
    Le righe dispare vengono colorate di grigi, quelle pari di un colore sembra un viola chiaro.
    Io vorrei colorare le righe dispare bianche, e quelle pari di giallo, come posso fare,



  • di Vecchio Frac data: 04/08/2017 11:52:52

    Direi che è solo un problema di palette di colori.
    Imposta .Color = vbYellow come Interior della formattazione condizionale e vediamo che succede.





  • di Marco31 (utente non iscritto) data: 04/08/2017 12:45:29

    Ho provato

    With .FormatConditions(1).Interior.Color = vbYellow
    .PatternColorIndex = xlAutomatic ' questo rigo di codice va in errore