Pagina 1 di 2 12 UltimaUltima
Risultati da 1 a 30 di 36

Discussione: Errore nel codice - Blocco If senza End If



  1. #1
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    Errore nel codice - Blocco If senza End If

    Mi rivolgo agli esperti del forum in tema di VBA.
    Nel codice seguente che stavo studiando esce un errore alla ruga in rosso:
    Codice: 
    Sub WorkSheet_Change(ByVal Target As Excel.Range)    
        Dim strCellaModificata As String
        Dim strColonna As String
        Dim strRiga As String
        Dim intRisposta As Integer
        Dim y As Integer
        Dim sgnPrezzoTotale As Single
        Dim blnTrovato As Boolean
        blnTrovato = False
        
        Const conPercorso = "percorso file .... "
        
        strCellaModificata = Target.Address
        
        If Range(strCellaModificata).Count > 1 Then
            Exit Sub
        End If
        
        strColonna = Range(strCellaModificata).Column
        strRiga = Range(strCellaModificata).Row
        
            If strColonna = 1 And strRiga >= 8 Then
                Workbooks.Open Filename:=conPercorso & "PRODOTTI.xlsm", ReadOnly:=True
                Workbooks("MODULO_ORDINE.xlsm").Activate
                y = 1
                Do Until blnTrovato = True Or y = 100
                If UCase(Range(strCellaModificata)) = UCase(Workbooks("PRODOTTI.xlsm").Worksheets("PRODOTTO").Range("A" & y)) Then
                    Range(strCellaModificata).Offset(0, 1) = Workbooks("PRODOTTI.xlsm").Worksheets("PRODOTTO").Range("B" & y)
                    Range(strCellaModificata).Offset(0, 3) = Workbooks("PRODOTTI.xlsm").Worksheets("PRODOTTO").Range("C" & y)
                    Range(strCellaModificata).Offset(0, 3).Select
                    Selection.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""_""??_);_(@_)"
                    Columns(ActiveCell.Column).EntireColumn.AutoFit
                    Workbooks("PRODOTTI.xlsm").Close
                    blnTrovato = True
                End If
                    y = y + 1
                Loop
        
                If blnTrovato = False Then
                    MsgBox "Il prodotto inserito non è presente nell'archivio"
                End If
            End If
                If strColonna = 3 And strRiga >= 8 Then
                    sgnPrezzoTotale = CInt(Range(strCellaModificata)) * CDec(Range("d" & strRiga))
                    Range("e" & strRiga) = sgnPrezzoTotale
                    Range("e" & strRiga).Select
                    Selection.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""_""??_);_(@_)"
                End If
             
    End Sub
    L'errore è: Errore di compilazione. Blocco If senza End If

    A me sembra che gli If e End If ci siano.
    Dov'è questo errore ?

  2. #2

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4024
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923

    Re: Errore nel codice - Blocco If senza End If

    Ciao,
    già non è semplicissimo seguire un codice scritto da qualcun altro senza sapere cosa deve fare questo codice, ma anche senza un file su cui provarlo.....

    Ormai non sei più "nuovo", dovresti sapere che in qualsiasi situazione, allegare un file serve per capire meglio il problema ed ottenere più risposte.

    A guardarlo così sembrerebbe corretto, ma senza un file su cui provarlo non mi metto a leggere ogni singola istruzione

    [EDIT]
    Tanto per sparare a caso....

    a quanto pare devi confrontare dei dati su due file excel...
    Questi due file sono aperti al momento dell'esecuzione del codice?

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

  3. #3
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    Re: Errore nel codice - Blocco If senza End If

    Citazione Originariamente Scritto da cromagno Visualizza Messaggio
    Ciao,
    già non è semplicissimo seguire un codice scritto da qualcun altro senza sapere cosa deve fare questo codice, ma anche senza un file su cui provarlo.....

    Ormai non sei più "nuovo", dovresti sapere che in qualsiasi situazione, allegare un file serve per capire meglio il problema ed ottenere più risposte.

    A guardarlo così sembrerebbe corretto, ma senza un file su cui provarlo non mi metto a leggere ogni singola istruzione

    [EDIT]
    Tanto per sparare a caso....

    a quanto pare devi confrontare dei dati su due file excel...
    Questi due file sono aperti al momento dell'esecuzione del codice?

    I due file sono aperti. ma non funziona comunque.
    Per quanto riguarda quello che fa il codice, questo codice permette di compilare in automatico una tabella prendendo i dati da un altro file.
    In particolare, quando l'utente inserisce i codici prodotti nella colonna A del file MODULO_ORDINE, automaticamente si compilano i campi di colonna B ed D coi dati provenienti dal file PRODOTTI dalle colonne B e C.

    Domani posso inserire i file.

    Buona serata.

  4. #4
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    41
    Messaggi
    2074
    Versione Office
    office pro 2010
    Likes ricevuti
    440
    Likes dati
    241

    Re: Errore nel codice - Blocco If senza End If

    a volte l errore mostrato non è quello reale.
    anche a me sembra che i blocchi IF siano a posto.

    la macro non è molto lunga. potresti fare cosi:
    metti un apostrofo (un REM) Davanti a tutte le istruzioni, poi, con F8, provi se riesci a farla funzionare.
    Se parte togli un REM (Un apostrofo ad un istruzione) finche non si ripresenta il problema.

    in questo modo dovresti, se non altro, trovare il vera riga che da il problema.

    se REMmando tutto, riscontri comunque il problema, allora son veramente i blocchi. ma vedendo tutto verde, indentando bene, dovresti risolvere comunque.
    a volte potrebbe esserci, più che una mancanza, potrebbe esserci un if di troppo in giro.

    in bocca al lupo.

  5. #5
    L'avatar di rollis13
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Cordenons
    Messaggi
    819
    Versione Office
    2016 64bit
    Likes ricevuti
    148
    Likes dati
    54

    Re: Errore nel codice - Blocco If senza End If

    Una volta sistemato questa riga (implicitamente te l'ha già suggerito cromagno):

    Const conPercorso = "percorso file .... "

    ed inserito un Application.EnableEvents = False quasi all'inizio ed un Application.EnableEvents = True alla fine la macro gira.

    Ti rimane poi da sistemare la chiusura del file PRODOTTI.xlsm quando non si trova corrispondenza tra i prodotti (basta cambiare la posizione dell'apposita riga già presente).

  6. #6
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    Re: Errore nel codice - Blocco If senza End If

    Citazione Originariamente Scritto da rollis13 Visualizza Messaggio
    Una volta sistemato questa riga (implicitamente te l'ha già suggerito cromagno):

    Const conPercorso = "percorso file .... "

    ed inserito un Application.EnableEvents = False all'inizio ed un Application.EnableEvents = True alla fine la macro gira.

    Ti rimane poi da sistemare la chiusura del file PRODOTTI.xlsm quando non si trova corrispondenza tra i prodotti (basta cambiare la posizione dell'apposita riga già presente).
    Il conPercorso l'ho tolto per la privacy. Ma nel file con cui sto provando c'è.
    Ho inserito le due istruzioni come hai detto, ma non funziona comunque. Non mi da più l'errore di prima , ma comunque non svolge il suo compito.

    ----------Post unito in automatico----------

    Citazione Originariamente Scritto da dracoscrigno Visualizza Messaggio
    a volte l errore mostrato non è quello reale.
    anche a me sembra che i blocchi IF siano a posto.

    la macro non è molto lunga. potresti fare cosi:
    metti un apostrofo (un REM) Davanti a tutte le istruzioni, poi, con F8, provi se riesci a farla funzionare.
    Se parte togli un REM (Un apostrofo ad un istruzione) finche non si ripresenta il problema.

    in questo modo dovresti, se non altro, trovare il vera riga che da il problema.

    se REMmando tutto, riscontri comunque il problema, allora son veramente i blocchi. ma vedendo tutto verde, indentando bene, dovresti risolvere comunque.
    a volte potrebbe esserci, più che una mancanza, potrebbe esserci un if di troppo in giro.

    in bocca al lupo.
    Scusami, ma non ho capito cosa dovrei fare !!

    Devo far diventare verde tutta l'istruzione ?
    E poi ?

  7. #7
    L'avatar di rollis13
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Cordenons
    Messaggi
    819
    Versione Office
    2016 64bit
    Likes ricevuti
    148
    Likes dati
    54

    Re: Errore nel codice - Blocco If senza End If

    Const conPercorso = "percorso file .... \"

    Il percorso indicato è completo di backslash finale ?

  8. #8
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    41
    Messaggi
    2074
    Versione Office
    office pro 2010
    Likes ricevuti
    440
    Likes dati
    241

    Re: Errore nel codice - Blocco If senza End If

    Rollis.
    se l errore di cui parli esiste, non causa il tipo di errore in oggetto. andrebbe in errore a quell istruzione specifica per file non trovato.

    program.

    sai che premendo F8 fai funzionare la macro passo a passo?

    se lasci intatti i costrutti if then else e metti un apostrofo davanti a tutte le istruzioni della macro, ti ritroverai con la macro con solo i costrutti IF ...THEN ...ELSE... END IF
    e tutto il resto sarà considerato COMMENTO (lo vedrai verde)
    a questo punto se avvi la macro, i casi possibili sono 2:
    il primo è che l errore viene generato comunque e quindi devi davvero rivedere se tutti i costrutti sono ben annidati.
    se, invece, l errore non viene mostrato, ALLORA, significa che i tuoi IF...THEN... ELSE... END IF, sono scritti in modo corretto e quindi è un altra istruzione ad essere scritta male.

    Quindi, per esclusione, togli un apostrofo alla volta e provi se il programma funziona.

    arriverai a togliere un apostrofo e a generare l errore di cui parli.

    tieni conto che
    DO UNTIL .... LOOP sono due righe alle quali devi togliere l accento nello stesso passaggio.

    ----------Post unito in automatico----------

    e gia che ci sei correggi lo scempio di utilizzare una variabile per memorizzare l address del Target per poi utilizzarla per determinare il medesimo Target.
    non ha senso. è macchiavellico...

    Range(strCellaModificata).Count
    è uguale a scrivere:
    Target.count

    Range(strCellaModificata).Column
    è uguale a scrivere:
    Target.Column

    Range(strCellaModificata).Row
    è uguale a scrivere:
    Target.Row

    ... sono al cellulare. Va a finire che l errore sta proprio in questo strano modo di utilizzare le variabili argomento.

  9. #9
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    Re: Errore nel codice - Blocco If senza End If

    Allego file di esempio.
    Spero che così concludiamo questa discussione.
    L'obiettivo di questo codice è: compilare in automatico una tabella prendendo i dati da un altro file.
    In particolare, quando l'utente inserisce i codici prodotti nella colonna A del file MODULO_ORDINE, automaticamente si devono compilare i campi di colonna B ed D coi dati provenienti dal file PRODOTTI dalle colonne B e C.

    Forse l'errore sta in queste colonne, avrò scambiato il nome di colonna ?

    Inoltre, il codice l'ho trovato in un libro che parla dei codici vba di excel. Altri codici hanno funzionato, ed ogni tanto si avvisava di controllare i "riferimenti" in Strumenti del VBA. Sarà anche qui necessario fare qualcosa ?

    Buon Weekend.
    File Allegati File Allegati

  10. #10
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    72
    Messaggi
    1115
    Versione Office
    2010
    Likes ricevuti
    143
    Likes dati
    1

    Re: Errore nel codice - Blocco If senza End If

    il codice è molto strano, comunque tu hai scritto
    Codice: 
                        If UCase(Range(strCellaModificata)) = UCase(Workbooks("PRODOTTI.xlsm").Worksheets("PRODOTTO").Range("A" & y)) Then
    ed il foglio di nome PRODOTTO non esiste

  11. #11
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    Re: Errore nel codice - Blocco If senza End If

    patel ... nominando il foglio3 come PRODOTTO funziona tutto !!! Grazie dell'aiuto.

    Ora, se volessi approfondire l'argomento aggiungendo altro codice per far funzionare meglio i due file, apro un'altra discussione o va bene questa ?
    In questo secondo caso andrebbe cambiato il titolo.

    Quello che vorrei fare è:
    - modificare il codice per fare in modo che nel file MODULO_ORDINE la colonna "prezzo" sia in C e "numero pezzi" sia in D
    - fare in modo che quando inserisco il nome di un cliente in B1, poi il quel foglio viene nominato automaticamente come la cella B1.
    - fare in modo che quando apro un altro foglio per gestire un altro cliente, nel nuovo foglio posso lavorare con lo stesso codice, collegato con il file PRODOTTI.xlsm

    Serve un'altra discussione ?

  12. #12
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    72
    Messaggi
    1115
    Versione Office
    2010
    Likes ricevuti
    143
    Likes dati
    1

    Re: Errore nel codice - Blocco If senza End If

    Il codice è organizzato molto male, andrebbe riscritto completamente e meglio sarebbe se il foglio prodotti fosse inserito direttamente nel file Modulo d'ordine.
    Io continuerei qui per ora, poi decideranno i moderatori.
    per il momento prova questa
    Codice: 
    Sub WorkSheet_Change(ByVal Target As Excel.Range)
    '    Application.EnableEvents = False
        Dim strCellaModificata As String
        Dim strColonna As String
        Dim strRiga As String
        Dim intRisposta As Integer
        Dim y As Integer
        Dim sgnPrezzoTotale As Single
        Dim blnTrovato As Boolean
        blnTrovato = False
            Const conPercorso = "F:\download\ESEMPI VBA\" ' <<<<<< da modificare
            If Target.Address = "$B$1" Then ActiveSheet.Name = Target
            If Target.Count > 1 And Target.Column <> 1 And Target.Column <> 4 Then
                Exit Sub
            End If
    
            strColonna = Target.Column
            strRiga = Target.Row
        
                If strColonna = 1 And strRiga >= 8 Then
                    Workbooks.Open Filename:=conPercorso & "PRODOTTI.xlsm", ReadOnly:=True
                    Workbooks("MODULO_ORDINE.xlsm").Activate
                    y = 1
                    Do Until blnTrovato = True Or y = 100
                        If UCase(Target) = UCase(Workbooks("PRODOTTI.xlsm").Worksheets("PRODOTTO").Range("A" & y)) Then
                            Target.Offset(0, 1) = Workbooks("PRODOTTI.xlsm").Worksheets("PRODOTTO").Range("B" & y)
                            Target.Offset(0, 2) = Workbooks("PRODOTTI.xlsm").Worksheets("PRODOTTO").Range("C" & y)
                            Target.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""_""??_);_(@_)"
                            Columns(ActiveCell.Column).EntireColumn.AutoFit
                            Workbooks("PRODOTTI.xlsm").Close
                            blnTrovato = True
                        End If
                            y = y + 1
                    Loop
        
                        If blnTrovato = False Then
                            MsgBox "Il prodotto inserito non è presente nell'archivio"
                        End If
                End If
                    If strColonna = 4 And strRiga >= 8 Then
                        sgnPrezzoTotale = CInt(Target) * CDec(Range("C" & strRiga))
                        Range("E" & strRiga) = sgnPrezzoTotale
                        Range("E" & strRiga).Select
                        Selection.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""_""??_);_(@_)"
                    End If
        Application.EnableEvents = True
        
             
    End Sub

  13. #13
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    Re: Errore nel codice - Blocco If senza End If

    Meglio tenere separati i due file. Voglio imparare queste cose, collegare i vari fogli con il VBA.
    Il "numero pezzi" come il nome del cliente, lo inserisce l'utente.
    Tramite VBA viene automatizzato la colonna del nome prodotto, del prezzo e del calcolo del prezzo totale dopo aver inserito la quantità.
    E' buono per migliorare il lavoro, ma si potrebbe migliorare.

    Avevo chiesto se era possibile proseguire aggiungendo altro. Vedi post #11

  14. #14
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    72
    Messaggi
    1115
    Versione Office
    2010
    Likes ricevuti
    143
    Likes dati
    1

    Re: Errore nel codice - Blocco If senza End If

    - modificare il codice per fare in modo che nel file MODULO_ORDINE la colonna "prezzo" sia in C e "numero pezzi" sia in D - FATTO
    - fare in modo che quando inserisco il nome di un cliente in B1, poi il quel foglio viene nominato automaticamente come la cella B1. - FATTO
    - fare in modo che quando apro un altro foglio per gestire un altro cliente, nel nuovo foglio posso lavorare con lo stesso codice, collegato con il file PRODOTTI.xlsm - spiega più dettagliatamente come corresti operare

  15. #15
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    Re: Errore nel codice - Blocco If senza End If

    Citazione Originariamente Scritto da patel Visualizza Messaggio
    - fare in modo che quando apro un altro foglio per gestire un altro cliente, nel nuovo foglio posso lavorare con lo stesso codice, collegato con il file PRODOTTI.xlsm - spiega più dettagliatamente come corresti operare
    Adesso nel file MODULO_ORDINE.xlsm al foglio1 c'è lo schema dove inserisco i dati e ricevo i dati del file PRODOTTI.xlsm; se apro un foglio2 per gestire gli ordini di un altro cliente, e faccio copia ed incolla dello schema del foglio1, poi in foglio2 non mi funziona il collegamento con il file PRODOTTI.xlsm.
    Per automatizzare il lavoro sarebbe utile che ogni nuovo foglio creato avesse il suo codice VBA (vedi sopra), o che questo sia disponibile a tutti i nuovi fogli che creo.

    ----------Post unito in automatico----------

    Circa gli altri due punti, funzionano. Grazie.

  16. #16
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    72
    Messaggi
    1115
    Versione Office
    2010
    Likes ricevuti
    143
    Likes dati
    1

    Re: Errore nel codice - Blocco If senza End If

    non devi aprire un foglio2 e fare copia ed incolla dal foglio1 al foglio2, devi cliccare col destro sul Foglio1, Sposta o Copia, spunta Crea una copia, OK

  17. #17
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    Re: Errore nel codice - Blocco If senza End If

    Ho fatto come dici. Si crea un nuovo foglio, poi in B1 ci metto il nuovo nome, e cambia anche l'etichetta.
    Poi pulisco i campi della tabella, dove devo mettere i codici dei prodotti, ed esce l'errore di debug.
    Il codice va aggiornato prevedendo la pulizia dati in caso di un nuovo foglio.

  18. #18
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    72
    Messaggi
    1115
    Versione Office
    2010
    Likes ricevuti
    143
    Likes dati
    1

    Re: Errore nel codice - Blocco If senza End If

    cambia la riga
    If Target.Count > 1 And Target.Column <> 1 And Target.Column <> 4 Then
    in
    If Target.Count > 1 Or (Target.Column <> 1 And Target.Column <> 4) Then

  19. #19
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    Re: Errore nel codice - Blocco If senza End If

    Citazione Originariamente Scritto da patel Visualizza Messaggio
    cambia la riga
    If Target.Count > 1 And Target.Column <> 1 And Target.Column <> 4 Then
    in
    If Target.Count > 1 Or (Target.Column <> 1 And Target.Column <> 4) Then
    Non funziona !!!
    Rispetto a prima non c'è l'errore di debug, ma comunque non fa quello che deve fare.
    Nel nuovo foglio creato come prima hai indicato, inserisco i codici prodotti in colonna e non si apre, come prima, il file PRODOTTI.xlsm, non c'è il passaggio dati tra i due file.

  20. #20
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    72
    Messaggi
    1115
    Versione Office
    2010
    Likes ricevuti
    143
    Likes dati
    1

    Re: Errore nel codice - Blocco If senza End If

    a me funziona, prova a riallegare il file

  21. #21
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    Re: Errore nel codice - Blocco If senza End If

    Citazione Originariamente Scritto da patel Visualizza Messaggio
    a me funziona, prova a riallegare il file
    Se necessario domani inserisco l'allegato.

    Però ho notato che:
    - si parte aprendo il file MODULO_ORDINE.xlsm, si digitano i codici in colonna A e, senza aprirsi il file PRODOTTI.xlsm, si inseriscono i prodotti;
    - se voglio duplicare un foglio, clicco con il pulsante destro su un nome di un foglio qualsiasi già presente, ed ottengo una copia esatta già formattata, poi inserisco il nome del foglio in B1 e cambio anche il nome dell'etichetta.

    Il punto è: questo nuovo foglio non funziona !!
    Se provo ad inserire nel nuovo foglio i codici dei prodotti in colonna A non succede niente. Neanche se l'inserimento codici avviene negli altri fogli che prima hanno funzionato.

    Bisogna far in modo che nel codice, ci sia un comando che capisca che quando c'è una variazione di formattazione del foglio il codice deve continuare a funzionare.

    Mi è capitato con un altro caso.

    In una tabella c'è un un campo dove il codice VBA mi mette il risultato di un calcolo. Se sul quel campo chiedo alla tabella (compare un piccolo pulsante dove posso scegliere tra la somma, la media, la varianza ed altro) di ottenere la somma, e poi con un pulsante richiedo il risultato di prima, il codice non funziona più.

    Ogni variazione di formattazione in un foglio, di un campo, il codice VBA non funziona più ?!?!?

  22. #22
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    72
    Messaggi
    1115
    Versione Office
    2010
    Likes ricevuti
    143
    Likes dati
    1

    Re: Errore nel codice - Blocco If senza End If

    io non noto alcun malfunzionamento

  23. #23
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    Re: Errore nel codice - Blocco If senza End If

    Citazione Originariamente Scritto da patel Visualizza Messaggio
    io non noto alcun malfunzionamento
    Se si tocca una colonna interessata dal codice, tipo la quinta colonna dove c'è il PrezzoTotale, poi non funziona più niente.
    Puoi fare anche tu una prova sul file già allegato e con il codice variato.

    Oggi inserisco di nuovo l'allegato, poi eventualmente segnalami dove hai notato differenze con il file che hai tu.

    Inoltre, bisognerebbe aggiungere al codice che quando si crea un nuovo foglio, come hai indicato prima al #16, i campi della tabella si devono svuotare per lasciare spazio ad altri articoli, dato che il foglio lo si crea per un nuovo cliente.

    Saluti.

  24. #24
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    41
    Messaggi
    2074
    Versione Office
    office pro 2010
    Likes ricevuti
    440
    Likes dati
    241

    Re: Errore nel codice - Blocco If senza End If

    Citazione Originariamente Scritto da ProgrammD69 Visualizza Messaggio
    ...

    Se si tocca una colonna interessata dal codice, tipo la quinta colonna dove c'è il PrezzoTotale, poi non funziona più niente.
    ...
    molto probabilmente il problema sta nel fatto che la sub routine va in errore ed il flusso viene interrotto lrima dell istruzione:

    Application.EnableEvents = True


    a parte eseguire la macro passo a passo con f8 per vedere dove si blocca; potresti tentare di gestire l errore con:

    ON ERROR GOTO etichetta

    all inizio della macro


    e terminarla con:

    Codice: 
    
    Exit Sub
    etichetta:
    msgbox "so è verificato l errore N° " & err.number & Vbcrlf & Vbcrlf & err.description
    Application.EnableEvents = True
    (non testato perche spedito da cellulare ;)

  25. #25
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    Re: Errore nel codice - Blocco If senza End If

    Citazione Originariamente Scritto da dracoscrigno Visualizza Messaggio
    molto probabilmente il problema sta nel fatto che la sub routine va in errore ed il flusso viene interrotto lrima dell istruzione:

    Application.EnableEvents = True


    a parte eseguire la macro passo a passo con f8 per vedere dove si blocca; potresti tentare di gestire l errore con:

    ON ERROR GOTO etichetta

    all inizio della macro


    e terminarla con:

    Codice: 
    
    Exit Sub
    etichetta:
    msgbox "so è verificato l errore N° " & err.number & Vbcrlf & Vbcrlf & err.description
    Application.EnableEvents = True
    (non testato perche spedito da cellulare ;)

    Ho fatto delle prove, aggiungendo il tuo codice sugli errori, ma non succede nulla, nel senso che il precedente codice continua a non funzionare quando faccio una cancellazione nel foglio di lavoro, e l'avviso degli errori non esce.

    Non sono un esperto di VBA, per cui vorrei sapere se partendo dal codice allegato al #1 sia possibile ottenere un qualcosa di più stabile.
    Esempio:
    - compilo i codici prodotti e le quantità di riga 2... e tutto funziona;
    - compilo i codici prodotti e le quantità di riga 3... e tutto funziona;
    - cancello la riga 3 perchè errata;
    - compilo i codici prodotti e le quantità di riga 3 ... e non funziona più nulla !!!
    Devo chiudere e riaprire il file per farlo funzionare di nuovo, ma se provo a fare cancellazioni come prima non funziona più.

    Vorrei sapere: questo tipo di cose succedono anche con i vostri codici ?
    O è il mio codice che va riscritto da zero ?

  26. #26
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    72
    Messaggi
    1115
    Versione Office
    2010
    Likes ricevuti
    143
    Likes dati
    1

    Re: Errore nel codice - Blocco If senza End If

    non hai più allegato il tuo file, io ho provato la sequenza di operazioni che hai scritto ma non risultano problemi e quindi non posso capire dove intervenire.
    Io uso excel 2010 e tu ?
    Ti avevo proposto di inserire i prodotti in un foglio e tu non hai accettato perché volevi imparare, aprire e chiudere un file ad ogni inserimento di dati non è consigliabile, magari il mio disco o il mio pc è più veloce del tuo e quindi non mi da problemi.
    Bisognerebbe che tu seguissi i consigli di chi ne sa più di te.

    ----------Post unito in automatico----------

    se mi dai ascolto e metti il foglio prodotti nel file dell'ordine il codice diventa
    Codice: 
    Sub WorkSheet_Change(ByVal Target As Excel.Range)
    If Target.Address = "$B$1" Then ActiveSheet.Name = Target
    If Target.Count > 1 Or (Target.Column <> 1 And Target.Column <> 4) Then
      Exit Sub
    End If
    strColonna = Target.Column
    strRiga = Target.Row
    If strColonna = 1 And strRiga >= 8 Then
      y = 1
      Do Until blnTrovato = True Or y = 100
        If UCase(Target) = UCase(Sheets("PRODOTTO").Range("A" & y)) Then
          Target.Offset(0, 1) = Sheets("PRODOTTO").Range("B" & y)
          Target.Offset(0, 2) = Sheets("PRODOTTO").Range("C" & y)
          Target.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""_""??_);_(@_)"
          Columns(ActiveCell.Column).EntireColumn.AutoFit
          blnTrovato = True
        End If
        y = y + 1
      Loop
      If blnTrovato = False Then
        MsgBox "Il prodotto inserito non è presente nell'archivio"
      End If
    End If
    If strColonna = 4 And strRiga >= 8 Then
       sgnPrezzoTotale = CInt(Target) * CDec(Range("C" & strRiga))
       Range("E" & strRiga) = sgnPrezzoTotale
       Range("E" & strRiga).Select
       Selection.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""_""??_);_(@_)"
    End If
    End Sub

  27. #27
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    Re: Errore nel codice - Blocco If senza End If

    Citazione Originariamente Scritto da patel Visualizza Messaggio
    non hai più allegato il tuo file, io ho provato la sequenza di operazioni che hai scritto ma non risultano problemi e quindi non posso capire dove intervenire.
    Io uso excel 2010 e tu ?
    Ti avevo proposto di inserire i prodotti in un foglio e tu non hai accettato perché volevi imparare, aprire e chiudere un file ad ogni inserimento di dati non è consigliabile, magari il mio disco o il mio pc è più veloce del tuo e quindi non mi da problemi.
    Bisognerebbe che tu seguissi i consigli di chi ne sa più di te.

    Come promesso allego il file per i controlli.

    Quello che chiedo è:
    - verificare che compiendo una cancellazione nel foglio ALFA o BETA di MODULO_ORDINE.xlsm poi dopo l'inserimento dei codici prodotti continui a funzionare;
    - verificare che dopo aver rinominato il foglio di lavoro (nel modo che mi hai indicato) poi l'inserimento dei codici prodotti continui a funzionare.
    - aggiungere codice VBA per fare in modo che quando creo un nuovo foglio per gestire un nuovo cliente/fornitore, poi svuoto il foglio dai dati precedenti ed al successivo inserimento dei codici prodotti, tutto funzioni.

    Saluti.
    File Allegati File Allegati

  28. #28
    L'avatar di Raffaele_53
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Binasco
    Età
    64
    Messaggi
    506
    Versione Office
    2007
    Likes ricevuti
    85
    Likes dati
    7

    Re: Errore nel codice - Blocco If senza End If

    Ciao a tutti
    Pensavo che chi avesse problemi, la prima cosa fosse allegare un file d'esempio.
    Alla fine a denti stretti allega con scarse spiegazioni.

    Mia personale opinione scrivo in colonna F a seguire il codice = Exit Sub

    Dov'è la variabile conPercorso?
    Mai visto un percorso >>>Const conPercorso = "..../" (barra rovesciata)
    Delimitare l'area del WorkSheet_Change = NISBA (non è utile)

    >>>If Target.Count > 1 Or Target.Column <> 1 And Target.Column <> 4 Then
    Exit Sub??? Esci dal codice senza ripristinare >>>Application.EnableEvents = True
    Goto fine
    ....
    ....
    Fine:
    Application.EnableEvents = True
    End Sub

    Non saprei cosa rispondere a meno di capire tutto il post

  29. #29
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    41
    Messaggi
    2074
    Versione Office
    office pro 2010
    Likes ricevuti
    440
    Likes dati
    241

    Re: Errore nel codice - Blocco If senza End If

    ma F8, hai imparato ad usarlo?

    se si ALLORA:

    un passo alla volta avrai visto il flusso del programma, Colorato di giallo, toccare QUASI tutte le istruzioni della macro.
    questo accade SEMPRE, anche SENZA, la mia idea balorda di farti leggere un eventuale errore.

    IMPARARE ad utilizzare il pulsante F8 della propria tastiera, durante l esecuzione di una macro, significa IMPARARE dove si sta sbagliando.

    quindi:
    impara, PRIMA di tutto, ad utilizzare F8.
    cosi potrai notare se:
    il flusso non si ferma
    il flusso si ferma.
    il flusso non passa dove ti sapetti

    perchè se non funzionano gli eventi VUOL SOLO DIRE che non li hai ripristinati ed il fatto che tu lo abbia scritto da qualche parte non implica che quell istruzione venga eseguita. lo.impari con F8.
    premi f8.
    poi premi f8
    poi ancora premi f8.
    vedrai le istruzioni evidenziarsi di giallo.
    premi f8.

    ...
    sei uscito dalla sub?
    la riga con l istruzione di riattivare gli eventi si è evidenziata oppure no?

    premi f8. è meglio d un chinotto ;)

  30. I seguenti utenti hanno dato un "Like"


  31. #30
    L'avatar di Raffaele_53
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Binasco
    Età
    64
    Messaggi
    506
    Versione Office
    2007
    Likes ricevuti
    85
    Likes dati
    7

    Re: Errore nel codice - Blocco If senza End If

    @dracoscrigno
    Volevo dirtelo l'altro giorno, vedi che F8 non funziona con WorkSheet_Change
    Al massimo metti in seconda riga un Msgbox "premi CTRL + ALT + PAUSE"

Discussioni Simili

  1. "codice" non si può leggere senza perder la vista.
    Di dracoscrigno nel forum Domande su Excel VBA e MACRO
    Risposte: 50
    Ultimo Messaggio: 26/03/17, 10:35
  2. [Risolto] errore su codice VBA
    Di g8trading nel forum Domande su Excel VBA e MACRO
    Risposte: 18
    Ultimo Messaggio: 20/01/17, 11:27
  3. Ripristino automatico Codice VBA dopo che è andato in errore
    Di Marco Lucani nel forum Domande su Excel VBA e MACRO
    Risposte: 2
    Ultimo Messaggio: 03/01/17, 18:14
  4. Grafici dinamici errore senza valori
    Di GianlucaCarbonara nel forum Domande sui Grafici di Excel
    Risposte: 1
    Ultimo Messaggio: 26/04/16, 17:07
  5. Blocco formule!!!!
    Di Fabio1972 nel forum Domande su Excel in generale
    Risposte: 2
    Ultimo Messaggio: 28/08/15, 19:21

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
  •