Ciao
ho provato a modificare la macro trasforma e altre 5 macro che
provvedevano a pulire le celle; ora uso(cellRange.clearContent(Flags).
Dopo il cambio tra ciclo <<IF ELSEIF ELSE>> ed il <<SELECT CASE>> Ã giÃ
incrementata la sua velocità di esecuzione, forse il select à pià veloce
dell' if , per quanto riguarda invece le macro di pulizia ne usavo una
registrata e dopo aver riscritto il codice per l'eliminazione dei
contenuti delle celle, il programma non tentenna pià nell'apertura delle
tabelle dopo l'esecuzione delle macro, un' altro piccolo passo e credo
di poterlo ottimizzare ancora di piÃ. Mi sono rimaste solo altre due
macro da ottimizzare:

Sub Orario1
Dim Doc As Object'Statino1
Dim cell1 As Object'Note
Dim cell2 As Object'Ingresso
Dim cell3 As Object'Uscita
Dim cell4 As Object'Giorno
Dim cell5 As Object'Giorno numerico
Dim cell6 As Object'Nome amministrato
Dim cell7 As Object
Dim cell8 As Object
Dim cell9 As Object
Dim cell10 As Object
Dim cell11 As Object
Dim cell12 As Object
Dim iop

Doc = ThisComponent.CurrentController.ActiveSheet
Beep
Beep
MsgBox("Questa à un operazione molto delicata"+Chr$(13)+_
           "siete pregati di non distrarvi !!!",48,"ATTENZIONE")
REM----------------------------------------------------------------------------------------------------------
For z = 0 to 5'Ciclo di inserimento dati orari nella colonna ingresso
uscita
        For i = 0 to 6
                iop = (i + p)           
                If iop = 62 Then
                        MsgBox ("Gli inserimenti per l'orario di entrata ed 
uscita del
"+cell6.String+Chr$(13)+_
                                        "sono terminati, cliccare sul pulsante 
'Riporto', 'Stampa' ed
infine"+Chr$(13)+_
                                        "sul pulsante 'Clear', prima di passare 
ad un nuovo amministrato.",
64, "INFO")
                        Exit For        
                Else
                        cell1=Doc.getCellByPosition(15,15+iop)'Note     
                        cell2=Doc.getCellByPosition(28,15+iop)'Ingresso 
                        cell3=Doc.getCellByPosition(29,15+iop)'Uscita
                        cell10=Doc.getCellByPosition(30,15+iop)'Orario 
lavorativo       
                        cell4=Doc.getCellByPosition(1,15+iop)'Giorno    
                        cell5=Doc.getCellByPosition(2,15+iop)'Giorno numerico   
                
                        cell6=Doc.getCellByPosition(6, 7)'Nome amministrato
                        cell7=Doc.getCellByPosition(32,15+iop)'Orario1
                        cell8=Doc.getCellByPosition(33,15+iop)'Orario2
                        cell9=Doc.getCellByPosition(34,15+iop)'Orario 
lavorativo2
                        cell11=Doc.getCellByPosition(31,15+iop)'Giorno
                        cell12=Doc.getCellByPosition(14,15+iop)'Colonna O 
Statino 1             
                        
                        If cell1.String = "Straordinario" Then
                                cell2.value = TimeValue(InputBox("Inserire 
l'orario di entrata,
espresso nel formato HH.mm . Es. 08.15",_
                                                                                
"Straordinario del giorno: "+cell4.String+" "+cell5.String,
""+cell7.String))
                                cell3.value = TimeValue(InputBox("Inserire 
l'orario di uscita,
espresso nel formato HH.mm . Es. 18.15",_
                                                                                
"Straordinario del giorno: "+cell4.String+" "+cell5.String,
""+cell8.String))                       
                                                                        
                        ElseIf cell1.string = "Anticipo" Then                   
                        
                                If cell4.string = "venerdi" AND cell12.string = 
"-04.00" Then
                                        cell2.string = Chr$(45)
                                        cell3.string = Chr$(45)
                                        cell10.string = "("& cell9.string &")"  
                
                                ElseIf cell4.string = "sabato" AND 
cell12.String = "-02.00" Then
                                        cell2.string = Chr$(45)
                                        cell3.string = Chr$(45)
                                        cell10.string = "("& cell9.string &")"
                                Else    
                                        cell2.value = 
TimeValue(InputBox("Inserire l'orario di entrata,
espresso nel formato HH.mm . Es. 08.15",_
                                                                                
        "Anticipo del giorno: "+cell4.String+" "+cell5.String,
""+cell7.String))
                                        cell3.value = 
TimeValue(InputBox("Inserire l'orario di uscita,
espresso nel formato HH.mm . Es. 13.15",_
                                                                                
        "Anticipo del giorno: "+cell4.String+" "+cell5.String,
""+cell8.String))                                                               
                                
                                End If          
                        ElseIf cell1.string = "Ispezione" AND cell9.String <> 
Chr$(45) Then
                                cell2.String = cell7.String
                                cell3.String = "continua"
                                cell10.String = "("& cell9.String &")"
                        ElseIf cell1.string = "Ispezione" AND cell9.String = 
Chr$(45) Then
                                If msgbox("        Orario estivo ?         
",256+4+32,"Ispezione
del:"+cell11.String)= 6 Then
                                        cell2.Value = TimeValue("07.30")
                                        cell3.String = "continua"
                                        cell10.String = cell9.String
                                Else
                                        cell2.Value = TimeValue("08.15")
                                        cell3.String = "continua"
                                        cell10.String = cell9.String
                                End If                          
                        ElseIf cell1.string = " " OR cell1.String = Chr$(45) OR 
cell1.string
= "Festivo" Then
                                Goto Label1
                        ElseIf cell1.string <> "Recupero" OR cell1.string <> " 
" OR
cell1.string <> Chr$(45) And cell9.string = Chr$(45) Then
                                cell2.string = Chr$(45)
                                cell3.string = Chr$(45)
                                cell10.string = cell9.string
                        ElseIf cell1.string <> "Recupero" OR cell1.string <> " 
" OR
cell1.string <> Chr$(45) Then
                                cell2.string = Chr$(45)
                                cell3.string = Chr$(45)
                                cell10.string = "("& cell9.string &")"
                        End If
                End If  
        Label1: 
        Next i
        p = p+12
        
Next z
REM--------------------------------------------------------------------------------------------------------
End Sub
Penso che un select case potrebbe migliorare la situazione, se avete
suggerimenti fatemelo sapere.
Grazie

Rispondere a