Condividi:        

[Excel]VB6: problema con matrici di numeri decimali

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[Excel]VB6: problema con matrici di numeri decimali

Postdi piter123 » 26/12/10 09:15

Salve, non riesco a capire per quale motivo se genero una matrice di numeri data dal contatore di un ciclo for next moltiplicata per un numero decimale fisso mi generi numeri strani e di conseguenza non vengano poi riconosciuti in un if then, allego il codice

su un modulo inserisco l'apertura di un foglio excel
Codice: Seleziona tutto
'DICHIARAZIONE VARIBILI
    Option Explicit
    'Per lavorare con Excel attivare in Progetto-Riferimenti  Microsoft Excel 11.0 Object Library
    Public AppExcel As Excel.Application
    Public FileExcel As Excel.Workbook
    Public Xls As Excel.Worksheet

Public Sub Apertura_Excel()
        Set AppExcel = New Excel.Application
        Set FileExcel = AppExcel.Workbooks.Add
        FileExcel.SaveAs (App.Path & "\XlsOptScan.xls")
        Set Xls = FileExcel.Worksheets(1)
End Sub
sulla form di avvio
Codice: Seleziona tutto
Private Sub Form_Load()
       call Apertura_Excel
       call Prova
End Sub

Public Sub Prova()
       Dim matr_prova(100) As Single
       Dim passo As Single
       passo = 0.1
       For X = 0 To 100
              matr_prova(X) = passo * X
              Xls.Cells(X + 1, 17) = matr_prova(X)
              If matr_prova(X) = 1.8 Then Exit For
       Next X
end sub
il codice di sub prova cra matrice e la scrive su excel e già quà compaiono numeri da 0 con passo 0,1 ma se andiamo sulla cella di un qualsiasi numero questo per esempio invece di essere 1,8 è 1,80000007152557 (uso sistema metrico italia), inoltre di conseguenza la riga If matr_prova(X) = 1.8 Then Exit For non viene mai eseguita nella sua parte then e il ciclo non viene abortito, come mai ?

Grazie
piter123
Utente Senior
 
Post: 190
Iscritto il: 07/11/07 18:31

Sponsor
 

Re: [Excel]VB6: problema con matrici di numeri decimali

Postdi pietrol » 26/12/10 12:39

Ciao piter123
prova a dichiarare le variabili come Double invece che Single
non chiedermi perchè ma a me così funziona.

ciao
pietrol
il lupo ululà, il castello ululì
pietrol
Utente Senior
 
Post: 270
Iscritto il: 07/01/09 14:34

Re: [Excel]VB6: problema con matrici di numeri decimali

Postdi ricky53 » 26/12/10 19:31

Ciao,
LEGGI QUI e troverai spiegazioni molto chiare sull'utilizzo delle variabili in VBA.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel]VB6: problema con matrici di numeri decimali

Postdi Anthony47 » 26/12/10 23:25

Trattandosi di un problema di approssimazione (il dato Single e' rappresentato su 4 byte, quindi con precisione di circa 2.3 * E-10), potrebbe essere piu' safe usare >= 1.799 invece che =1.8

Ciao a tutti.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel]VB6: problema con matrici di numeri decimali

Postdi piter123 » 28/12/10 21:21

è vero, con double funzia, mille grazie, se poi qualcuno vuole anche spiegare il perchè meglio ancora
piter123
Utente Senior
 
Post: 190
Iscritto il: 07/11/07 18:31


Torna a Applicazioni Office Windows


Topic correlati a "[Excel]VB6: problema con matrici di numeri decimali":


Chi c’è in linea

Visitano il forum: Nessuno e 39 ospiti