Errore runtime 1004



  • Errore run-time 1004
    di Semio data: 09/05/2014 16:37:30

    In un codice del tipo sotto, ricevo questo messaggio :

    Errore di run-time '1004'
    Errore definito dall'applicazione o dall'oggetto.

    Sulla riga : sq1 = Cells(Ariga, 1)

    Chi mi sa dire il motivo e come dovrei correggere?
    Grazie e ciao a tutti

     
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Sheets("Foglio1").Select
    Dim Ariga As Integer, Criga As Integer, Driga As Integer, Friga As Integer
    Dim Hriga As Integer, Iriga As Integer, Jriga As Integer, Kriga As Integer
    Dim giorno As Integer
    Dim sq1 As String, sq2 As String
    Dim val1 As Integer, val2 As Integer
    Ariga = Criga = Driga = Friga = 5
    Hriga = Iriga = Jriga = Kriga = 4
    sq1 = Cells(Ariga, 1)
    sq2 = Cells(Criga, 3)
    val1 = Cells(Driga, 4)
    val2 = Cells(Friga, 6)
    …..
    ….
    End sub
    



  • di Lucas87 data: 09/05/2014 16:49:32

    Ciao
    Io questo non l'ho mai visto

    Ariga = Criga = Driga = Friga = 5
    Hriga = Iriga = Jriga = Kriga = 4

    devi assegnarle una alla volta



  • di Lucas87 data: 09/05/2014 16:51:56

    ...e poi..perchè usare 4 variabili che hanno lo stesso valore?



  • di Semio data: 09/05/2014 16:54:48

    Il codice che ho trascritto è sintetizzato.
    In realtà mi serve la variabile perchè quella parte sarà inserita in un ciclo FOR.
    Quindi non si possono assegnare valori a cascata come si fa con altri linguaggi?
    Grazie



  • di lepat (utente non iscritto) data: 09/05/2014 17:27:36

    non si può, comunque allegare soltanto una parte di codice non permette di capire e quindi di suggerirti soluzioni.



  • di Semio data: 09/05/2014 18:13:37

    Grazie Lucas e grazie Lepat!
    Sono d'accordo con te Lepat, ma ho pensato che snellire il codice potesse essere più agevole.
    Comunque Lucas ha ben capito il problema ed infatti era tutto in quell'assegnazione di variabili.
    Grazie ancora !!!
    ciao



  • di Mister_x (utente non iscritto) data: 09/05/2014 18:31:15

    cioa

    l'errore alla riga sq1 = Cells(Ariga, 1) ti viene dato perche' quando dai un valore alla variabile
    Ariga in teoria come tu pensi di avere scritto questa e' uguale a 5, ma dando un valore alle variabili in questo modo
    Ariga = Criga = Driga = Friga = 5
    in realta' mantengono il loro valore di partenza = 0 quindi la riga 0 non e' accettata Errore di run-time '1004'
    valorizzare variabili
    Ariga = 5
    Criga = 5
    Driga = 5
    Friga = 5
    in questo modo il loro valore e' 5
    altra cosa. a che servono 4 variabili quando hanno un valore uguale anche se le inserisci in un ciclo For????
    sq1 = Cells(Ariga=5, 1) quindi riga 5 col 1
    sq2 = Cells(Criga=5, 3) riga 5 col 3
    val1 = Cells(Driga=5, 4) riga 5 col4
    val2 = Cells(Friga=5, 6) riga 5 col 6

    ciao






  • di scossa data: 09/05/2014 20:06:29

    cit Mister_x: "ma dando un valore alle variabili in questo modo
    Ariga = Criga = Driga = Friga = 5
    in realta' mantengono il loro valore di partenza = 0 quindi la riga 0 non e' accettata Errore di run-time '1004'
    "

    Una precisazione: In realtà la sola Ariga viene valorizzata, perché il VBA valuta Ariga = Criga = Driga = Friga = 5 come segue:
    prima valuta se Friga = 5 risultato False
    poi valuta se Driga = False risultato False
    poi valuta se Criga = False risultato False
    infine assegna a Ariga il valore False. Essendo stata Ariga dichiarata integer il valore False verrà convertito in 0.



    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)



  • di scossa data: 10/05/2014 13:53:17

    Una correzione (il True in grassetto) ed una precisazione:

    Ariga = Criga = Driga = Friga = 5 come segue:
    Ariga = (Criga = (Driga = (Friga = 5)))

    cioè:

    prima valuta se Friga = 5 risultato False

    poi valuta se Driga = False risultato True

    poi valuta se Criga = True risultato False infine assegna a Ariga il valore False




    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)



  • di lepat (utente non iscritto) data: 10/05/2014 14:56:56

    Allora voglio scrivere anch'io in rosso e in grassetto



  • di scossa data: 10/05/2014 17:36:48

    @lepat: se serve a rendere più leggibile/comprensibile il post, perché no?


    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)