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