Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 4 su 4

Errore overflow

  1. #1
    Saint non è in linea Scolaretto
    Ho costruito una sub che mi inserisce in una colonna la stessa data per 1290 volte.. il problema è che devo riportarla per tutto l'anno, solamente che appena arriva al 25 gennaio mi da un errore di overflow, questa è il codice:

     
    Sub inserisci_Calendario()
    Dim data As Date
    Dim i As Integer
    
    data = #1/1/2009#
    i = 2
    While data <> #1/31/2009#
     
      For i = i To i + 1289
            
            Range("A" & i).Value = data
            Range("A" & i).Select
      
      Next
          
    data = data + 1
    ActiveCell.Offset(1, 0).Select
                
    Wend
    End Sub
    
    ho provato ad inserire solo un mese, però il problema rimane.. il problema dipende dal tipo di codice che ho usato?magari si può ottenere lo stesso risultato diversamente impiegando meno risorse? in caso come posso convertire questo codice?
    infine, se volessi fare in modo che mi inserisca in ogni colonna le date di ogni mese, come devo utilizzare il codice ActiveCell, in modo tale che li inserisca in base alla cella che seleziono? se utilizzo questi codici, me li scrive saltando delle righe:

    ActiveCell.Value = data
    ActiveCell.Offset(i, 0).Select
    
    grazie

  2. #2
    L'avatar di dodo47
    dodo47 non è in linea Topo di biblioteca
    Ciao, l'overflow te lo da in quanto devi dimensionare i come double.
    Ciò premesso, e non entrando nel merito del perchè devi ripetere una data 1290 volte, la seguente routine ti sviluppa dalla colonna A alla colonna L - per i 12 mesi - il tuo anomalo calendario....dura un po'.
    Sub inserisci_Calendario()
    Dim data As Date
    Dim i As Double
    data = #1/1/2009#
    gg_mese = Day(DateSerial(Year(data), Month(data) + 1, 0))
    
    i = 2
    
    For z = 1 To 12
        For x = 1 To gg_mese
          For i = i To i + 1289
              Cells(i, z) = data
          Next i
          data = data + 1
        Next x
    gg_mese = Day(DateSerial(Year(data), Month(data) + 1, 0))
    i = 2
    Next z
    End Sub
    
    ciao

  3. #3
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Quote Originariamente inviato da dodo47 Visualizza il messaggio
    Ciao, l'overflow te lo da in quanto devi dimensionare i come double.....ciao
    Perchè dici Double...?
    In questo caso che il valore raggiunto dalla variabile è definito in massimo 1289+2(valore iniziale) usare Double di certo non darà errore, ma è altrettanto inutile, basta usare un LONG, il Double, il Single, il Currency ed il Decimal si usano solo quando serve gestire dati con una precisione elevata dopo la virgola... in questo caso che motivo avrebbe...?

    Vada per LONG.

    In ogni caso nell'Help trovate la definizione della capacità delle singole VarType, ed i relativi limiti, questo aiuta ad ottimizzare ed a non sprecare inutilmente risorse.
    ℹ️ Leggi di più su @Alex ...

  4. #4
    L'avatar di dodo47
    dodo47 non è in linea Topo di biblioteca
    Quote Originariamente inviato da @Alex Visualizza il messaggio
    .....Vada per LONG....
    Grazie Alex

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Errore Overflow
    Da mailman_1969 nel forum Microsoft Access
    Risposte: 7
    Ultimo Post: 02-09-2019, 14:50
  2. TQRPDFFilter errore di Stack Overflow
    Da Monti nel forum Delphi
    Risposte: 1
    Ultimo Post: 12-03-2019, 10:30
  3. Errore di overflow
    Da Jocman nel forum Microsoft Word
    Risposte: 2
    Ultimo Post: 08-09-2017, 08:31
  4. Errore overflow 0/0
    Da cicchiniello nel forum Microsoft Excel
    Risposte: 4
    Ultimo Post: 18-03-2014, 09:24
  5. [VB2010] Errore 6: overflow aritmetico
    Da il Fenomeno nel forum Visual Basic .Net
    Risposte: 1
    Ultimo Post: 23-10-2012, 15:37