|
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. | NEI PREFERITI | .:: | RSS Forum | RSS News | NEWS web | NEWS software | |
| PUBBLICITA' | | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | | CERCA nel FORUM » | |
06-11-2017, 20.24.22 | #1 |
Newbie
Registrato: 31-10-2017
Messaggi: 25
|
OverFlow, perchè ?
Ho provato a passare un malware, ho verificato il PC con Memory test , ma l 'errore resta e non so più che fare. Chiedo quindi il vs aiuto. Allego entrambi i file . I file sono caricati i due formati diversi, zip e rar, per problemi di "ingombro". le formule che mi interessano possono essere calcolate anche per via normale , con Excel, ma in questo caso mi sorgerebbe un altro problema ovvero definire un intervallo dinamico per il calcolo della deviazione standard e/o della varianza , ovvero con numerosità del campione soggetto a variazioni . ps Ho provato anche a modificare alcune dim da Double a Long, pensando a un qualche vincolo che ne impediva il funzionamento, ma nulla da fare. |
06-11-2017, 21.54.53 | #2 |
Senior Member
WT Expert
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
|
Rif: OverFlow, perchè ?
Io ho aperto il file "yaho ......"
sono andata nel foglio "Data" e ho cancellato tutto. dal foglio "parameters" ho lanciato la macro tramite il pulsante "Get data fron Yahoo" e mi ha riempito le celle del foglio "data" poi ho cliccato sul pulsante "analyze data" e mi ha riempito la colonna J e le prime 2 celle della colonna L senza darmi nessun errore. Noto però che hai delle chiamate SET, questo comando alloca una porzione di memoria per la variabile che segue la parola chiave SET e non la distruggi a fine routine. ti consiglio di inserire prima della chiamata End Sub la dicitura per eliminare l'allocazione di memoria. Per esempio, hai una chiamata Set dataSheet = Sheets("Data") prima di uscire dalla routine distruggi tutto con Set dataSheet = Nothing ripeti questo comando per tutte le chiamate SET che hai nelle routine, poi riprova. L'overflow causato è di sicuro dovuto a un uso ripetuto della routine senza eliminare dalla memoria i dati. forse.
___________________________________
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale - |
06-11-2017, 23.43.07 | #3 |
Newbie
Registrato: 31-10-2017
Messaggi: 25
|
Rif: OverFlow, perchè ?
Adesso provo a modificare il mio file "TestDevSTD", che è quello che mi dà problemi. Sorry se sono stato poco chiaro nella richiesta.
In quel file troverai un elenco dati statico, che non si aggiorna perchè non ho riportato la macro di "carico", comunque su questo elenco vorrei applicare la macro Analyzedata. |
07-11-2017, 00.00.41 | #4 |
Newbie
Registrato: 12-05-2011
Messaggi: 3
|
Rif: OverFlow, perchè ?
Ciao.
Forse la soluzione è molto più banale Codice:
Sub AnalyzeData() Dim i As Integer Dim LastRow As Integer Dim avReturn As Double Dim stDev As Double Dim vrnc As Double LastRow = Sheets("Data").UsedRange.Row - 2 + Sheets("Data").UsedRange.Rows.Count Prova a dichiararle come Long. |
07-11-2017, 09.20.03 | #5 | |
Newbie
Registrato: 31-10-2017
Messaggi: 25
|
Rif: OverFlow, perchè ?
Provato, nulla da fare si impianta qui :
Quota:
|
|
07-11-2017, 09.28.16 | #6 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Rif: OverFlow, perchè ?
Se dividi per 0, l'overflow è diretta conseguenza.
___________________________________
Practice feeds Skill,Skill limits Failure,Failure enhances Security,Security needs Practice |
07-11-2017, 12.21.23 | #7 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Rif: OverFlow, perchè ?
Concentriamoci su LastRow del file YahooStockQuotes...
Hai scritto: Codice:
LastRow = Sheets("Data").UsedRange.Row - 2 + Sheets("Data").UsedRange.Rows.Count Codice:
LastRow = Sheets("Data").UsedRange.Rows.Count A questo punto, prova a cancellare l'ultima riga selezionandola interamente e poi premendo cancella. Rieseguendo il codice, il valore sarà sempre 1008. Com'è possibile, visto che alla riga 1008 non c'è nulla ? Addirittura il valore della J1008 pari ad 1 !?! Riseleziona la riga 1008 e questa volta eliminala. Riesegui ed il valore di LastRow sarà effettivamente 1007
___________________________________
Practice feeds Skill,Skill limits Failure,Failure enhances Security,Security needs Practice |
07-11-2017, 16.54.27 | #8 |
Newbie
Registrato: 31-10-2017
Messaggi: 25
|
Rif: OverFlow, perchè ?
Ma a te funziona, senza piu errore di overflow ? Io =impedito ma testardo, non ci sono mica riuscito .
|
07-11-2017, 18.59.45 | #9 | |
Senior Member
WT Expert
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
|
Rif: OverFlow, perchè ?
Quota:
Il problema dell'overflow è il calcolo della riga, in quel file l'ultima riga scritta è la 1284 se continui con il codice e trovi delle righe vuote ti rimanda errore perchè vuoi che faccia dei calcoli su valori vuoti. Modifica la riga di codice LastRow = Sheets("Storico_CSV").UsedRange.Row - 1 + Sheets("Storico_CSV").Range("U2") con LastRow = Sheets("Storico_CSV").Cells(Rows.Count, 11).End(xlUp).Row (colonna K) e non ti darà più errore. Te ne riporterà un'altro alle righe Sheets("Storico_CSV").Range("avReturn") = avReturn Sheets("Storico_CSV").Range("stDev") = stDev Sheets("Storico_CSV").Range("vrnc") = vrnc con range devi inserire un riferimento di cella e non una variabile. che cosa sono per te avreturn etc....
___________________________________
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale - |
|
07-11-2017, 19.52.31 | #10 | |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Rif: OverFlow, perchè ?
Quota:
Controlla il valore della variabile i e delle celle fino a quando ti va in overflow: L'overflow è quasi certamente dovuto all'operazione algebrica su quei valori, ma tu effettua un debug.print prima del calcolo, così da poter verificare i valori di tutte le variabili prima che si possano eseguire calcoli su di esse. La finesta di debug si visualizza con Ctrl+G nell'editor VBA.
___________________________________
Practice feeds Skill,Skill limits Failure,Failure enhances Security,Security needs Practice |
|
07-11-2017, 20.06.22 | #11 | |
Newbie
Registrato: 31-10-2017
Messaggi: 25
|
Rif: OverFlow, perchè ?
Ciao, risolto, finalmente ! Funziona tutto e non fa piu scherzi con l'overflow, complimenti per la tua "mossa" di cambiare la colonna di riferimento, è stata la pensata risolutiva.
Quota:
|
|
07-11-2017, 21.13.03 | #12 |
Newbie
Registrato: 31-10-2017
Messaggi: 25
|
Rif: OverFlow, perchè ?
Grazie a tutti per l'aiuto. Alla prossima
|
08-11-2017, 17.34.36 | #13 | |
Newbie
Registrato: 31-10-2017
Messaggi: 25
|
Rif: OverFlow, perchè ?
Aggiornamento.
Capita che i dati scaricati abbiano qualche "buco" quindi la macro si impiantava per errore 13 , ho perciò inserito un controllo errore . Quota:
|
|
08-11-2017, 21.42.47 | #14 |
Senior Member
WT Expert
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
|
Rif: OverFlow, perchè ?
Io ho provato varie volte e non mi rimanda nessun errore.
Per "Buco" nei dati intendi forse che ci sia qualche riga vuota?? se è così meglio gestire il ciclo IF con una condizione diversa tipo SE "ciccio" = empty Then salta una riga (i = i+1) end if Ho usato questo codice Codice:
Option Explicit Sub AnalyzeData() Dim i, LastRow As Integer Dim avReturn, stDev, vrnc As Double LastRow = Sheets("Storico_CSV").Cells(Rows.Count, 11).End(xlUp).Row Sheets("Storico_CSV").Range("S1") = "Daily Returns" 'ex J1 Sheets("Storico_CSV").Range("U1") = "# Data" 'ex L1 Sheets("Storico_CSV").Range("U2") = LastRow 'ex L2 For i = 3 To LastRow Sheets("Storico_CSV").Range("S" & i) = Sheets("Storico_CSV").Range("O" & i - 1) - (Sheets("Storico_CSV").Range("O" & i) / Sheets("Storico_CSV").Range("O" & i - 1)) Next i avReturn = Application.WorksheetFunction.Average(Sheets("Storico_CSV").Range("S2:S" & LastRow)) stDev = Application.WorksheetFunction.StDev_P(Sheets("Storico_CSV").Range("S2:S" & LastRow)) vrnc = Application.WorksheetFunction.Var_P(Sheets("Storico_CSV").Range("S2:S" & LastRow)) Sheets("Storico_CSV").Range("H2") = avReturn Sheets("Storico_CSV").Range("H3") = stDev Sheets("Storico_CSV").Range("H4") = vrnc End Sub
___________________________________
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale - |
08-11-2017, 22.13.35 | #15 | |
Newbie
Registrato: 31-10-2017
Messaggi: 25
|
Rif: OverFlow, perchè ?
Grazie Alexandra, l'esempio era nel file che non sono riuscito ad allegare, comunque ciò che succede con nuovi dati è simile a :
Quota:
|
|
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
|
|
Discussioni simili | ||||
Discussione | Autore discussione | Forum | Risposte | Ultimo messaggio |
HeartBleed - Perchè così pericoloso ? | LoryOne | Sicurezza&Privacy | 5 | 12-04-2014 22.16.17 |
Perchè le donne non sono come noi uomini? | Kal-El | Chiacchiere in libertà | 16 | 14-10-2010 23.18.21 |
Orgoglio gay nella polizia... ma perché? | Doomboy | Chiacchiere in libertà | 95 | 02-09-2008 22.07.56 |
Citazioni (2) | Paul Muad'Dib | Chiacchiere in libertà | 552 | 31-07-2008 10.14.29 |
Sfoghi. | Flying Luka | Chiacchiere in libertà | 1063 | 06-01-2006 00.56.34 |