PDA

Visualizza la versione completa : Tetto Massimo


Michele_s
23-04-2004, 23:07
Ciao a tutti

Ho provato a mettere insieme la macro seguente con lo scopo di visualizzare prima in una msgbox e poi in una cella L39 il totale delle ore lavorate pomeridiane fino a quel momento in quel mese, tenendo conto di un tetto massimo variabile di mese in mese da inserire con una inputbox.
Purtroppo si blocca sulla riga sottolineata e non riesco a venirne a capo.

Oltre al problema esposto sopra, mi chiedevo se era possibile attivare la macro seguente nel momento successivo al trascinamento dalla cella superiore (il giorno prima) a quella inferiore (il giorno in corso) contenente la formula per il calcolo delle ore pomeridiane. Così trascinando la cella avrei non solo lo straordinario di quel giorno, ma il totale mensile fino a quel momento.
Più in generale si può abbinare una macro all’attivazione di una cella, o al compimento di un’operazione in una cella, senza operare sull'intero foglio, come avviene cliccando su ThisWoorkbook?

Ecco il listato:

Sub Superato_Il_Totale_Consentito()
ActiveSheet.Select
Dim a As Date
Dim x As Integer
Dim limite As Variant
Dim y As Date
limite = Application.InputBox("Formato ora hh/mm", "inserisci le ore consentite")
Range("L4").Select
y = ActiveSheet.Cells(x, 12).NumberFormat = "h:mm"
a = 0
For x = 4 To 34
‘ le righe da 1 a 3 sono occupate da intestazioni
If IsDate(a) Then a = a + y
Range("L39").Value = a
MsgBox a
If a >= limite Then
MsgBox ("Hai Superato il limite consentito"), _
vbCritical - vbOKOnly, "ATTENZIONE"
Else
MsgBox ("Non hai ancora superato il limite consentito"), _
vbCritical + vbOKOnly, "ATTENZIONE"
End If
If ActiveSheet.Cells(x, 12) = "" Then Exit For
Range("A1").Select
Next
End Sub

Grazie
Michele

ProtoBot
24-04-2004, 12:57
Purtroppo non è uscita la riga sottolineata, quindi ho dovuto cercare d'interpretare il codice, un errore sicuro esiste in questo punto:

Sub Superato_Il_Totale_Consentito()
ActiveSheet.Select
Dim a As Date
Dim x As Integer
Dim limite As Variant
Dim y As Date
limite = Application.InputBox("Formato ora hh/mm", "inserisci le ore consentite")
Range("L4").Select
y = ActiveSheet.Cells(x, 12).NumberFormat = "h:mm"'in questo punto


la variabile x vale 0 e non puoi passare uno 0 come riferimento riga colonna.

Inoltre .... se devi calcolare il numero delle ore lavorate, non sarebbe meglio calcolarlo come valore intero anzichè complicarti la vita con il formato data.

La variabile limite, viene dimensionata da un'inputbox, dove ti viene richiesto di inserire un valore nel formato hh/mm, ma a quanto può ammontare il monte ore da non superare?

ciao