Utilizzo non valido di Property
Hai un problema con Excel? 
Utilizzo non valido di Property
di Ale (utente non iscritto) data: 29/01/2016 14:12:06
Buongiorno, questo frammento di macro mi da il problema sopra indicato.
Dove sbaglio? (Mi evidenzia i Cells, che prima erano Range, ma non è cambiato nulla).
riga2 = 78 'riga cella carico prova 1
riga3 = 1 'riga cella EMT
cont = 6
Do Until cont = 6
riga = riga - 1
If cont = 3 Then
riga2 = riga2 + 2
End If
Cells ("C" & riga2) >= Cells("L" & riga3) And Cells("C" & riga2) <= Cells("L" & riga3 + 1)
Cells("I" & riga) = Range("M" & riga3 + 1)
riga3 = riga3 + 1
cont = cont - 1
Loop |
di patel data: 29/01/2016 18:28:26
cells vuole la riga e la colonna, non puoi usarlo con la stessa sintassi di range
di Ale (utente non iscritto) data: 29/01/2016 18:58:51
Come dicevo sopra, prima erano tutti Range, quindi il problema è un altro :/
di patel data: 29/01/2016 19:06:00
allega il file
di Mohican1989 data: 30/01/2016 12:34:24
Come ha già detto patel la sintassi di Cells() non è come quella che noi leggiamo per indicare una cella (A1, B2,C1) che sono invece utilizzate nella sintassi range().
Al contrario bisogna inserire dei N RIGA e N COLONNA, Cells(NRIGA,NCOLONNA)che possono essere indicati come numeri (123456) o variabili contenenti gli stessi.
Potresti provare a cambiare la sintassi con il codice che posto sotto, nel frattempo che alleghi il file.
Perchè mai poi hai o hanno dovuto cambiare Range con cells se non si conosceva la sintassi ?
EDIT: modificato il codice, non mi sono accorto che l' ultima parte -> Cells("I" & riga)=RANGE("M" & riga3+1)
c'è un range e non un cell
Cells (3,riga2) >= Cells(12,riga3) And Cells(3,riga2) <= Cells(12,riga3 + 1)
Cells(9,riga) = Range("M" & riga3 + 1) |
di patel data: 30/01/2016 13:00:24
cit. Ale
Come dicevo sopra, prima erano tutti Range, quindi il problema è un altro :/
2+3 = 6 sbagliato
1+3 = 6 sbagliato
secondo la tua teoria cambiando il 2 in 1 si ottiene sempre l'errore quindi 1 va bene
di Ale (utente non iscritto) data: 30/01/2016 14:15:30
Grazie Mohican, provo.
di Ale (utente non iscritto) data: 02/02/2016 09:06:53
Buondì.
Con Cells mi crea problemi con i maggiore-uguale, ecc.
Perciò, ignorando i Cells, che erano stati messi solo per prova, e rimettendo i Range, dov'è l'errore?
riga2 = 78 'riga cella carico prova 1
riga3 = 1 'riga cella EMT
cont = 6
Do Until cont = 6
riga = riga - 1
If cont = 3 Then
riga2 = riga2 + 2
End If
Range ("C" & riga2) >= Range("L" & riga3) And Range("C" & riga2) <= Range("L" & riga3 + 1)
Range("I" & riga) = Range("M" & riga3 + 1)
riga3 = riga3 + 1
cont = cont - 1
Loop |
di patel data: 02/02/2016 10:50:14
questa riga non ha senso
Range ("C" & riga2) >= Range("L" & riga3) And Range("C" & riga2) <= Range("L" & riga3 + 1)
|
di Ale (utente non iscritto) data: 02/02/2016 11:19:33
Perché?
di patel data: 02/02/2016 11:38:35
spiegami tu cosa vuoi fare con questa riga, io posso dire soltando che non è una riga valida in vba
è come dire 4 > 3 e 3 < 4, a cosa serve ?
di Ale (utente non iscritto) data: 02/02/2016 14:26:39
Devo riempiere una serie di celle ( Range("I" & riga2)) con alcuni valori ( Range("M" & riga3+1)), dopo aver fatto un controllo Range ("C" & riga2) >= Range("L" & riga3) And Range("C" & riga2) <= Range("L" & riga3 + 1).
Inizialmente, il codice era così:
If Range("C78") >= 0 And Range("C78") <= Range("L231") Then
Range("I83:I85") = Range("M231")
End If
If Range("C78") >= Range("L232") And Range("C78") <= Range("L233") Then
Range("I83:I85") = Range("M233")
End If
If Range("C78") >= Range("L234") And Range("C78") <= Range("F33") Then
Range("I83:I85") = Range("M235")
End If
If Range("C80") >= 0 And Range("C80") <= Range("L231") Then
Range("I86:I88") = Range("M231")
End If
If Range("C80") >= Range("L232") And Range("C80") <= Range("L233") Then
Range("I86:I88") = Range("M233")
End If
If Range("C80") >= Range("L234") And Range("C80") <= Range("F33") Then
Range("I86:I88") = Range("M235")
End If |
di patel data: 02/02/2016 16:50:10
e tu perché hai tolto if ... then ?
di Ale (utente non iscritto) data: 02/02/2016 17:15:03
Patel, perdonami, se sai darmi una soluzione, scrivila.
Sto cercando di semplificare la macro, poiché ha tantissime ripetizioni inutili, tra le quali quell'IF...THEN, se ci guardi.
Sai dirmi cosa c'è di sbagliato nel codice? O sai aiutarmi a scriverne uno corretto?
riga2 = 78 'riga cella carico prova 1
riga3 = 1 'riga cella EMT
cont = 6
Do Until cont = 6
riga = riga - 1
If cont = 3 Then
riga2 = riga2 + 2
End If
Range ("C" & riga2) >= Range("L" & riga3) And Range("C" & riga2) <= Range("L" & riga3 + 1)
Range("I" & riga) = Range("M" & riga3 + 1)
riga3 = riga3 + 1
cont = cont - 1
Loop |
di patel data: 02/02/2016 17:57:07
per scrivere o correggere un codice occorrer sapere cosa deve fare e tu non l'hai mai spiegato e non hai voluto allegare il file.
Mi viene il dubbio che non lo sai nemmeno tu e che stai facendo modifiche a casaccio.
di Ale (utente non iscritto) data: 02/02/2016 18:29:45
Non sapendo cosa significa quell'errore, faccio fatica ad apportare modifiche sensate.
Ti ho spiegato cosa deve fare quel pezzo di macro, e ti ho anche allegato la vecchia macro, in cui è molto più chiaro ed evidentemente il funzionamento.
"Utilizzo non valido di Property" cosa significa? Cosa c'è, materialmente, di sbagliato in quello che ho scritto? Cosa include questo errore e come posso risolverlo?
Grazie
di Mohican1989 data: 02/02/2016 19:43:50
Aiutati per farti aiutare ^^
puoi riallegare la macro ?
di Ale (utente non iscritto) data: 02/02/2016 20:04:31
Macro nuova:
riga2 = 78 'riga cella carico prova 1
riga3 = 1 'riga cella EMT
cont = 6
Do Until cont = 6
riga = riga - 1
If cont = 3 Then
riga2 = riga2 + 2
End If
Range ("C" & riga2) >= Range("L" & riga3) And Range("C" & riga2) <= Range("L" & riga3 + 1)
Range("I" & riga) = Range("M" & riga3 + 1)
riga3 = riga3 + 1
cont = cont - 1
Loop
Macro vecchia:
If Range("C78") >= 0 And Range("C78") <= Range("L231") Then
Range("I83:I85") = Range("M231")
End If
If Range("C78") >= Range("L232") And Range("C78") <= Range("L233") Then
Range("I83:I85") = Range("M233")
End If
If Range("C78") >= Range("L234") And Range("C78") <= Range("F33") Then
Range("I83:I85") = Range("M235")
End If
If Range("C80") >= 0 And Range("C80") <= Range("L231") Then
Range("I86:I88") = Range("M231")
End If
If Range("C80") >= Range("L232") And Range("C80") <= Range("L233") Then
Range("I86:I88") = Range("M233")
End If
If Range("C80") >= Range("L234") And Range("C80") <= Range("F33") Then
Range("I86:I88") = Range("M235")
End If
di Mohican1989 data: 02/02/2016 21:01:42
Ok ma se posti il file possiamo vedere cos c'è all interno dei range e capire se è un problema di espressione o solo di sintassi.
di patel data: 03/02/2016 09:28:07
Ale ha molto tempo da perdere e vorrebbe farlo perdere anche a noi
di Ale (utente non iscritto) data: 03/02/2016 10:23:36
Ok Mohican, ho allegato il file al topic.
Se hai bisogno di altro, chiedi pure.
di Mohican1989 data: 03/02/2016 23:43:32
Avendo visto il file, a questo punto posso pensare come già ipotizzato da patel che tu non sappia cosa stai facendo, per lo meno quando stai andando a compilare il codice di VBA.
Così la macro "funziona" se per funziona intendiamo che non si interrompe per errore.
Detto ciò patel ti aveva già ribadito che il controllo che stavi cercando di fare se vie era un istruzione con IF evidentemente un motivo c era, IF CONDIZIONI THEN ISTRUZIONE END IF -> SE LE CONDIZIONI IN SEGUITO RIPORTATE RISULTANO VERE ALLORA ESEGUI L'ISTRUZIONE SUCCESSIVA ALTRIMENTI CONTINUA IL CODICE SENZA INSERIRE L'ISTRUZIONE POSTA TRA THEN E END IF.
Se togli il costrutto if(if ... then...end if), è chiaro che il programma non sa cosa stai cercando di fare e anche per un essere umano non sarebbe intuibile. E come se al posto di dire SE 5+2=8 e 3+2=5 allora dimmi "GIUSTO" tu scrivi 5+2=8 e 3+2=5 GIUSTO, capisci che non è neanche intendibile tra persone pensanti figuriamoci da una macchina.Inoltre non sapevi neanche ci sono delle istruzioni da tenere fuori dal ciclo che permettono di azzerare il contatore e aumentare la riga di verifica di 1.
Volevo aiutarti ma se non hai idea di quello che fai questo aiuto risulterà superfluo.
Public Sub Compilazione()
Dim riga, riga2, riga3, cont As Integer
riga = 89
riga2 = 78
riga3 = 1
cont = 6
Do Until cont = 0
riga = riga - 1
If cont = 3 Then
riga2 = riga2 + 2
End If
If Range("C" & riga2) >= Range("L" & riga3) And Range("C" & riga2) <= Range("L" & riga3 + 1) Then
Range("I" & riga) = Range("M" & riga3 + 1)
End If
riga3 = riga3 + 1
cont = cont - 1
Loop
End Sub |
di Ale (utente non iscritto) data: 04/02/2016 06:50:11
Ho tolto l'IF... THEN semplicemente perché non ero sicura che la macro riuscisse ad eseguire il controllo con celle non "fisse", cioè celle che "scorrono" con il contatore.
Ho fatto programmazione a scuola, 5 anni fa. È già tanto che sia riuscita a scrivere il programma e farlo funzionare come si deve. Ora come ora sto solo cercando di migliorarlo e di eliminare le mille ripetizioni che contiene.
Se sapevo risolvermi il problema, non chiedevo aiuto su un forum, ti pare?
di patel data: 04/02/2016 08:02:08
Nessuno qui ha la sfera di cristallo, se non dici qual'è l'obiettivo della tua macro nessuno sarà in grado di aiutarti, sembra che sia un segreto.
di Ale (utente non iscritto) data: 04/02/2016 12:41:52
Gesù. Non capisco se mi trolli o se sei serio.
Devo compilare una serie di celle, le ho anche COLORATE DI GIALLO. Non mi sembra così difficile da capire.
Quelle celle devono essere riempite con i valori nella tabellina a lato del foglio, facendo il controllo coi due valori sopra la tabella.
Se nom capisci i riferimenti alle celle, ti scrivo il controllo in italiano, coi numeri.
di patel data: 04/02/2016 13:41:44
il mio troll finisce qui
Vuoi Approfondire?