Condividi:        

Istruzione non legge 24:00

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

Istruzione non legge 24:00

Postdi trittico69 » 26/01/12 21:11

Ciao a tutti allego un programmino che mi da un errore..in pratica nel mese di gennaio in AH31 se metto 24:00 non me lo riporta in G10 invece se metto qualsiasi altro orario me lo riporta…le due celle sono collegate tra loro con il codice nel modulo 2.
Grazie!
http://uploading.com/files/6c33292m/SER ... B2012.rar/
trittico69
Utente Senior
 
Post: 497
Iscritto il: 16/08/09 18:41

Sponsor
 

Re: Istruzione non legge 24:00

Postdi Flash30005 » 26/01/12 23:39

Perché in realtà non esiste l'ora 24:00
ma 00:00
(hai mai visto un orologio impostato per 24h con ora 24:00?)
quindi per non alterare le macro all'interno del file
dovresti usare un campo da 23:31 a 23:59

Altrimenti modificare una riga nella macro "Minuti"
Codice: Seleziona tutto
 'SE LA SOMMA DEI MINUTI DELLE 3 CELLE SONO MINORI O UGUALI A 30 NON FARE NULLA

  Case VBA.Minute(AG) + VBA.Minute(AH) + VBA.Minute(AI) <= 30 '<<< esistente lasciare così
   Application.EnableEvents = False                '<<< esistente lasciare così
   If AG > 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG) '<<< esistente lasciare così
   If AH > 1 Then G = VBA.Int((AH) * 24) Else: If Int(AH) <> 1 Then G = VBA.Hour(AH) Else: G = 24 '<<< sostituire con questa



ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Istruzione non legge 24:00

Postdi Anthony47 » 27/01/12 00:03

Non sapendo che cosa dovrebbe realizzare quella macro e leggendo i termini del problema vado necessariamente a occhio...
All' inizio della macro Minuti hai queste istruzioni:
Codice: Seleziona tutto
 'SE LA SOMMA DEI MINUTI DELLE 3 CELLE SONO MINORI O UGUALI A 30 NON FARE NULLA

  Case VBA.Minute(AG) + VBA.Minute(AH) + VBA.Minute(AI) <= 30
   Application.EnableEvents = False
   If AG > 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
   If AH > 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
   If AI > 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)

Se guardi l' istruzione If AH > 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH) ti accorgerai che 24h:00m, che corrisponde (nell' impostazione di excel) al valore "1", come risultato del test sara' negativo, e in G (G10) saranno inserire solo le ore di AH (AH31), che (sempre per come le date e le ore sono considerate in excel) sono invece 0; 24:00 infatti corrisponde alle ore 0 del "giorno dopo".
Quindi quella riga in ragionevolmente deve diventare
Codice: Seleziona tutto
   If AH >= 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)

Presumo che lo stesso discorso vale anche per If AG > 1 e If AI > 1, oltre che per tutti gli altri "Case" che compongono la macro.

Credo comunque sia meglio chiedere all' autore del programma una revisione delle macro sulla base di tutte le evidenze che sono emerse ultimamente.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19223
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Istruzione non legge 24:00

Postdi trittico69 » 27/01/12 08:20

ok grazie....entrambi i suggerimenti sono diversi ma indentici giusto?
trittico69
Utente Senior
 
Post: 497
Iscritto il: 16/08/09 18:41

Re: Istruzione non legge 24:00

Postdi Anthony47 » 28/01/12 01:12

Direi che i due suggerimenti producono lo stesso effetto; non dimenticare di valutare il commento "Presumo che lo stesso discorso vale anche per If AG > 1 e If AI > 1, oltre che per tutti gli altri "Case" che compongono la macro", nel senso che credo che la modifica debba essere apportata su tutte le If impostate come quella relativa ad AH.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19223
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Istruzione non legge 24:00

Postdi trittico69 » 29/01/12 19:41

c'è ancora qualcosa che non va...in F10 e H10 va bene ma in G10 non compare il numero 24..ho provato a scriverlo manualmente in AH31 il numero 24:00 e allora va bene ma se 24:00 viene scritto tramite formule allora in G10 compare O
il codice corretto è
Codice: Seleziona tutto
Sub minuti()
Dim AG As Range
Dim AH As Range
Dim AI As Range
Dim F As Range
Dim G As Range
Dim H As Range
Dim vero As Boolean

Set AG = ThisWorkbook.ActiveSheet.Range("AG31")
Set AH = ThisWorkbook.ActiveSheet.Range("AH31")
Set AI = ThisWorkbook.ActiveSheet.Range("AI31")
Set F = ThisWorkbook.ActiveSheet.Range("F10")
Set G = ThisWorkbook.ActiveSheet.Range("G10")
Set H = ThisWorkbook.ActiveSheet.Range("H10")

vero = False
If ActiveSheet.Name = "RIEP" Then vero = True
If Not vero Then

Select Case True

 'SE LA SOMMA DEI MINUTI DELLE 3 CELLE SONO MINORI O UGUALI A 30 NON FARE NULLA

  Case VBA.Minute(AG) + VBA.Minute(AH) + VBA.Minute(AI) <= 30
   Application.EnableEvents = False
   If AG >= 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
   If AH >= 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
   If AI >= 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)
 
 Case VBA.Minute(AG) = 0 _
   And VBA.Minute(AH) > 30 _
   And VBA.Minute(AI) > 30 _
   And VBA.Minute(AH) + VBA.Minute(AI) < 90
   Application.EnableEvents = False
   If AG >= 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
   If AH >= 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
   If AI >= 1 Then H = VBA.Int((AI) * 24) + 1 Else H = VBA.Hour(AI) + 1
   
     Case VBA.Minute(AG) = 0 _
   And VBA.Minute(AH) > 30 _
   And VBA.Minute(AI) > 30 _
   And VBA.Minute(AH) + VBA.Minute(AI) > 90
   Application.EnableEvents = False
   If AG >= 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
   If AH >= 1 Then G = VBA.Int((AH) * 24) + 1 Else G = VBA.Hour(AH) + 1
   If AI >= 1 Then H = VBA.Int((AI) * 24) + 1 Else H = VBA.Hour(AI) + 1
 
 
 'SE LA SOMMA DEI MINUTI DELLA 1ª E 2ª CELLA SONO MAGGIORI DI 30,
 'MA MINORE O UGUALE A 90 E I MINUTI DELLA 1ª CELLA SONO
 'MAGGIORI O UGUALI ALLA 2ª CELLA INCREMENTA LA 1ª CELLA DI 1 ORA
 
  Case VBA.Minute(AG) > 0 _
   And VBA.Minute(AH) > 0 _
   And VBA.Minute(AI) = 0 _
   And VBA.Minute(AG) >= VBA.Minute(AH) _
   And VBA.Minute(AG) + VBA.Minute(AH) > 30 _
   And VBA.Minute(AG) + VBA.Minute(AH) <= 90
   Application.EnableEvents = False
   If AG >= 1 Then F = VBA.Int((AG) * 24) + 1 Else F = VBA.Hour(AG) + 1
   If AH >= 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
   If AI >= 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)
   
   
 'SE LA SOMMA DEI MINUTI DELLA 1ª E 2ª CELLA SONO MAGGIORI DI 30,
 'MA MINORE O UGUALE A 90 E I MINUTI DELLA 1ª CELLA SONO
 'MINORI ALLA 2ª CELLA INCREMENTA LA 2ª CELLA DI 1 ORA
 
  Case VBA.Minute(AG) > 0 _
   And VBA.Minute(AH) > 0 _
   And VBA.Minute(AI) = 0 _
   And VBA.Minute(AG) < VBA.Minute(AH) _
   And VBA.Minute(AG) + VBA.Minute(AH) > 30 _
   And VBA.Minute(AG) + VBA.Minute(AH) <= 90
   Application.EnableEvents = False
   If AG >= 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
   If AH >= 1 Then G = VBA.Int((AH) * 24) + 1 Else G = VBA.Hour(AH) + 1
   If AI >= 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)
   
   
 'SE LA SOMMA DEI MINUTI DELLA 1ª E 2ª CELLA SONO MAGGIORI DI 90,
 'MA MINORE O UGUALE A 120 E I MINUTI DELLA 1ª CELLA SONO
 'MINORI ALLA 2ª CELLA INCREMENTA LA 1ª E LA 2ª CELLA DI 1 ORA
 
  Case VBA.Minute(AG) > 0 _
   And VBA.Minute(AH) > 0 _
   And VBA.Minute(AI) = 0 _
   And VBA.Minute(AG) < VBA.Minute(AH) _
   And VBA.Minute(AG) + VBA.Minute(AH) > 90 _
   And VBA.Minute(AG) + VBA.Minute(AH) <= 120
   Application.EnableEvents = False
   If AG >= 1 Then F = VBA.Int((AG) * 24) + 1 Else F = VBA.Hour(AG) + 1
   If AH >= 1 Then G = VBA.Int((AH) * 24) + 1 Else G = VBA.Hour(AH) + 1
   If AI >= 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)
   
   
 'SE LA SOMMA DEI MINUTI DELLA 1ª E 3ª CELLA SONO MAGGIORI DI 30,
 'MA MINORE O UGUALE A 90 E I MINUTI DELLA 1ª CELLA SONO
 'MAGGIORI O UGUALI ALLA 3ª CELLA INCREMENTA LA 2ª CELLA DI 1 ORA

  Case VBA.Minute(AG) > 0 _
   And VBA.Minute(AH) = 0 _
   And VBA.Minute(AI) > 0 _
   And VBA.Minute(AG) >= VBA.Minute(AI) _
   And VBA.Minute(AG) + VBA.Minute(AI) > 30 _
   And VBA.Minute(AG) + VBA.Minute(AI) <= 90
   Application.EnableEvents = False
   If AG >= 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
   If AH >= 1 Then G = VBA.Int((AH) * 24) + 1 Else G = VBA.Hour(AH) + 1
   If AI >= 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)
   
   
 'SE LA SOMMA DEI MINUTI DELLA 1ª E 3ª CELLA SONO MAGGIORI DI 30,
 'MA MINORE O UGUALE A 90 E I MINUTI DELLA 1ª CELLA SONO
 'MINORI  ALLA 3ª CELLA INCREMENTA LA 3ª CELLA DI 1 ORA
 
  Case VBA.Minute(AG) > 0 _
   And VBA.Minute(AH) = 0 _
   And VBA.Minute(AI) > 0 _
   And VBA.Minute(AG) < VBA.Minute(AI) _
   And VBA.Minute(AG) + VBA.Minute(AI) > 30 _
   And VBA.Minute(AG) + VBA.Minute(AI) <= 90
   Application.EnableEvents = False
   If AG >= 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
   If AH >= 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
   If AI >= 1 Then H = VBA.Int((AI) * 24) + 1 Else H = VBA.Hour(AI) + 1
   
   
 'SE LA SOMMA DEI MINUTI DELLA 1ª E 3ª CELLA SONO MAGGIORI DI 90,
 'MA MINORE O UGUALE A 120 E I MINUTI DELLA 1ª CELLA SONO
 'MINORI O UGUALI ALLA 3ª CELLA INCREMENTA LA 2ª E LA 3ª CELLA DI 1 ORA
 
  Case VBA.Minute(AG) > 0 _
   And VBA.Minute(AH) = 0 _
   And VBA.Minute(AI) > 0 _
   And VBA.Minute(AG) <= VBA.Minute(AI) _
   And VBA.Minute(AG) + VBA.Minute(AI) > 90 _
   And VBA.Minute(AG) + VBA.Minute(AI) <= 120
   Application.EnableEvents = False
   If AG >= 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
   If AH >= 1 Then G = VBA.Int((AH) * 24) + 1 Else G = VBA.Hour(AH) + 1
   If AI >= 1 Then H = VBA.Int((AI) * 24) + 1 Else H = VBA.Hour(AI) + 1
   
   
 'SE LA SOMMA DEI MINUTI DELLA 2ª E 3ª CELLA SONO MAGGIORI DI 30,
 'MA MINORE O UGUALE A 90 E I MINUTI DELLA 2ª CELLA SONO
 'MAGGIORI O UGUALI ALLA 3ª CELLA INCREMENTA LA 2ª CELLA DI 1 ORA
 
  Case VBA.Minute(AG) = 0 _
   And VBA.Minute(AH) > 0 _
   And VBA.Minute(AI) > 0 _
   And VBA.Minute(AH) >= VBA.Minute(AI) _
   And VBA.Minute(AH) + VBA.Minute(AI) > 30 _
   And VBA.Minute(AH) + VBA.Minute(AI) <= 90
   Application.EnableEvents = False
   If AG >= 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
   If AH >= 1 Then G = VBA.Int((AH) * 24) + 1 Else G = VBA.Hour(AH) + 1
   If AI >= 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)
   
   
 'SE LA SOMMA DEI MINUTI DELLA 2ª E 3ª CELLA SONO MAGGIORI DI 30,
 'MA MINORE O UGUALE A 90 E I MINUTI DELLA 2ª CELLA SONO
 'MINORI ALLA 3ª CELLA INCREMENTA LA 3ª CELLA DI 1 ORA
 
  Case VBA.Minute(AG) = 0 _
   And VBA.Minute(AH) > 0 _
   And VBA.Minute(AI) > 0 _
   And VBA.Minute(AH) < VBA.Minute(AI) _
   And VBA.Minute(AH) + VBA.Minute(AI) > 30 _
   And VBA.Minute(AH) + VBA.Minute(AI) <= 90
   Application.EnableEvents = False
   If AG >= 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
   If AH >= 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
   If AI >= 1 Then H = VBA.Int((AI) * 24) + 1 Else H = VBA.Hour(AI) + 1
 
 
 'SE LA SOMMA DEI MINUTI DELLA 2ª E 3ª CELLA SONO MAGGIORI DI 90,
 'MA MINORE O UGUALE A 120 E I MINUTI DELLA 2ª CELLA SONO
 'MINORI O UGUALI ALLA 3ª CELLA INCREMENTA LA 2ª E LA 3ª CELLA DI 1 ORA

  Case VBA.Minute(AG) = 0 _
   And VBA.Minute(AH) > 0 _
   And VBA.Minute(AI) > 0 _
   And VBA.Minute(AH) <= VBA.Minute(AI) _
   And VBA.Minute(AH) + VBA.Minute(AI) > 90 _
   And VBA.Minute(AH) + VBA.Minute(AI) <= 120
   Application.EnableEvents = False
   If AG >= 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
   If AH >= 1 Then G = VBA.Int((AH) * 24) + 1 Else G = VBA.Hour(AH) + 1
   If AI >= 1 Then H = VBA.Int((AI) * 24) + 1 Else H = VBA.Hour(AI) + 1
 
  Case VBA.Minute(AG) > 0 _
   And VBA.Minute(AH) > 0 _
   And VBA.Minute(AI) > 0 _
   And VBA.Minute(AG) < 30 _
   And VBA.Minute(AH) < 30 _
   And VBA.Minute(AI) < 30 _
   And VBA.Minute(AG) + VBA.Minute(AH) + VBA.Minute(AI) > 30 _
   And VBA.Minute(AG) + VBA.Minute(AH) + VBA.Minute(AI) < 90
   Application.EnableEvents = False
   If AG >= 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
   If AH >= 1 Then G = VBA.Int((AH) * 24) + 1 Else G = VBA.Hour(AH) + 1
   If AI >= 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)

 

 'ARROTONDA IN ECCESSO LA CELLA CON PIU' DI 30 MINUTI SE I MINUTI  DELLE ALTRE DUE CELLE SONO UGUALI A ZERO

  Case VBA.Minute(AG) > 30 _
   And VBA.Minute(AH) = 0 _
   And VBA.Minute(AI) = 0
   Application.EnableEvents = False
   If AG >= 1 Then F = VBA.Int((AG) * 24) + 1 Else F = VBA.Hour(AG) + 1
   If AH >= 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
   If AI >= 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)
  Case VBA.Minute(AG) = 0 _
   And VBA.Minute(AH) > 30 _
   And VBA.Minute(AI) = 0
   Application.EnableEvents = False
   If AG >= 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
   If AH >= 1 Then G = VBA.Int((AH) * 24) + 1 Else G = VBA.Hour(AH) + 1
   If AI >= 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)
  Case VBA.Minute(AG) = 0 _
   And VBA.Minute(AH) = 0 _
   And VBA.Minute(AI) > 30
   Application.EnableEvents = False
   If AG >= 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
   If AH >= 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
   If AI >= 1 Then H = VBA.Int((AI) * 24) + 1 Else H = VBA.Hour(AI) + 1
   
   

   
   Case VBA.Minute(AG) > 30 _
   And VBA.Minute(AH) < 30 _
   And VBA.Minute(AI) < 30 _
   And VBA.Minute(AH) + VBA.Minute(AI) > 30 _
   And VBA.Minute(AG) + VBA.Minute(AH) + VBA.Minute(AI) < 120
   Application.EnableEvents = False
   If AG >= 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
   If AH >= 1 Then G = VBA.Int((AH) * 24) + 1 Else G = VBA.Hour(AH) + 1
   If AI >= 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)


   Case VBA.Minute(AG) < 30 _
   And VBA.Minute(AH) > 30 _
   And VBA.Minute(AI) < 30 _
   And VBA.Minute(AG) + VBA.Minute(AI) > 30 _
   And VBA.Minute(AG) + VBA.Minute(AH) + VBA.Minute(AI) < 120
   Application.EnableEvents = False
   If AG >= 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
   If AH >= 1 Then G = VBA.Int((AH) * 24) + 1 Else G = VBA.Hour(AH) + 1
   If AI >= 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)

   Case VBA.Minute(AG) < 30 _
   And VBA.Minute(AH) < 30 _
   And VBA.Minute(AI) > 30 _
   And VBA.Minute(AG) + VBA.Minute(AH) > 30 _
   And VBA.Minute(AG) + VBA.Minute(AH) + VBA.Minute(AI) < 120
   Application.EnableEvents = False
   If AG >= 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
   If AH >= 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
   If AI >= 1 Then H = VBA.Int((AI) * 24) + 1 Else H = VBA.Hour(AI) + 1


   Case VBA.Minute(AG) > 30 _
   And VBA.Minute(AH) < 30 _
   And VBA.Minute(AI) < 30 _
   And VBA.Minute(AH) + VBA.Minute(AI) < 30
   Application.EnableEvents = False
   If AG >= 1 Then F = VBA.Int((AG) * 24) + 1 Else F = VBA.Hour(AG) + 1
   If AH >= 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
   If AI >= 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)

   Case VBA.Minute(AG) < 30 _
   And VBA.Minute(AH) > 30 _
   And VBA.Minute(AI) < 30 _
   And VBA.Minute(AG) + VBA.Minute(AI) < 30
   Application.EnableEvents = False
   If AG >= 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
   If AH >= 1 Then G = VBA.Int((AH) * 24) + 1 Else G = VBA.Hour(AH) + 1
   If AI >= 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)


  Case VBA.Minute(AG) < 30 _
   And VBA.Minute(AH) < 30 _
   And VBA.Minute(AI) > 30 _
   And VBA.Minute(AG) + VBA.Minute(AH) < 30
   Application.EnableEvents = False
   If AG >= 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
   If AH >= 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
   If AI >= 1 Then H = VBA.Int((AI) * 24) + 1 Else H = VBA.Hour(AI) + 1

   
 'SE I MINUTI DELLE TRE CELLE SONO UGUALI A 30 ARROTONDA IN ECCESSO LA TERZA CELLA
 
   
 
  Case VBA.Minute(AG) = 30 _
   And VBA.Minute(AH) = 30 _
   And VBA.Minute(AI) = 30
   Application.EnableEvents = False
   If AG >= 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
   If AH >= 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
   If AI >= 1 Then H = VBA.Int((AI) * 24) + 1 Else H = VBA.Hour(AI) + 1
 
 
     
   
 
 'SE

  Case VBA.Minute(AG) > 30 _
   And VBA.Minute(AH) = 30 _
   And VBA.Minute(AI) = 30 _
   And VBA.Minute(AG) + VBA.Minute(AH) + VBA.Minute(AI) > 90 _
   And VBA.Minute(AG) + VBA.Minute(AH) + VBA.Minute(AI) < 120
   Application.EnableEvents = False
   If AG >= 1 Then F = VBA.Int((AG) * 24) + 1 Else F = VBA.Hour(AG) + 1
   If AH >= 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
   If AI >= 1 Then H = VBA.Int((AI) * 24) + 1 Else H = VBA.Hour(AI) + 1


 'SE

  Case VBA.Minute(AG) > 30 _
   And VBA.Minute(AH) > 30 _
   And VBA.Minute(AI) > 30 _
   And VBA.Minute(AG) + VBA.Minute(AH) + VBA.Minute(AI) > 120 _
   And VBA.Minute(AG) + VBA.Minute(AH) + VBA.Minute(AI) < 150
   Application.EnableEvents = False
   If AG >= 1 Then F = VBA.Int((AG) * 24) + 1 Else F = VBA.Hour(AG) + 1
   If AH >= 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
   If AI >= 1 Then H = VBA.Int((AI) * 24) + 1 Else H = VBA.Hour(AI) + 1

Case VBA.Minute(AG) > 30 _
   And VBA.Minute(AH) > 30 _
   And VBA.Minute(AI) > 30 _
   And VBA.Minute(AG) + VBA.Minute(AH) + VBA.Minute(AI) = 150
   Application.EnableEvents = False
   If AG >= 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
   If AH >= 1 Then G = VBA.Int((AH) * 24) + 1 Else G = VBA.Hour(AH) + 1
   If AI >= 1 Then H = VBA.Int((AI) * 24) + 1 Else H = VBA.Hour(AI) + 1

Case VBA.Minute(AG) > 30 _
   And VBA.Minute(AH) > 30 _
   And VBA.Minute(AI) > 30 _
   And VBA.Minute(AG) + VBA.Minute(AH) + VBA.Minute(AI) > 150
   Application.EnableEvents = False
   If AG >= 1 Then F = VBA.Int((AG) * 24) + 1 Else F = VBA.Hour(AG) + 1
   If AH >= 1 Then G = VBA.Int((AH) * 24) + 1 Else G = VBA.Hour(AH) + 1
   If AI >= 1 Then H = VBA.Int((AI) * 24) + 1 Else H = VBA.Hour(AI) + 1


'---------------------------------------------------------------------------------------------
End Select
End If
Set AG = Nothing
Set AH = Nothing
Set AI = Nothing
Set F = Nothing
Set G = Nothing
Set H = Nothing
Application.EnableEvents = True
End Sub
trittico69
Utente Senior
 
Post: 497
Iscritto il: 16/08/09 18:41

Re: Istruzione non legge 24:00

Postdi trittico69 » 29/01/12 22:30

trittico69
Utente Senior
 
Post: 497
Iscritto il: 16/08/09 18:41

Re: Istruzione non legge 24:00

Postdi Flash30005 » 30/01/12 00:55

Sempre nello stesso punto della macro da me postata aggiungi la riga che vedi evidenziata
Codice: Seleziona tutto
 'SE LA SOMMA DEI MINUTI DELLE 3 CELLE SONO MINORI O UGUALI A 30 NON FARE NULLA

  Case VBA.Minute(AG) + VBA.Minute(AH) + VBA.Minute(AI) <= 30
   Application.EnableEvents = False
   If AG > 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
   If AH > 1 Then G = VBA.Int((AH) * 24) Else: If Int(AH) <> 1 Then G = VBA.Hour(AH) Else: G = 24  '<<< dalla precedente macro
   If G = 0 Then G = 24   ì<<<<< aggiungere questa
   If AI > 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)
 


Ma, ripeto, stai "imbarcando acqua" e stiamo "tamponando le falle":
potresti ancora navigare ma rischi di affondare continuando su questa rotta

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Istruzione non legge 24:00

Postdi Anthony47 » 30/01/12 11:00

Credo sia un fatto di approssimazioni, che col calcolo degli orari e' frequente; io cambierei tutte le If in
Codice: Seleziona tutto
If XY > 0.9999 Then etc etc


Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19223
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Istruzione non legge 24:00

Postdi trittico69 » 30/01/12 19:35

ok funziona grazie
trittico69
Utente Senior
 
Post: 497
Iscritto il: 16/08/09 18:41


Torna a Applicazioni Office Windows


Topic correlati a "Istruzione non legge 24:00":


Chi c’è in linea

Visitano il forum: Nessuno e 68 ospiti