Salve a tutti,
ho un foglio con delle colonne contenenti alcuni valori. L'ultima colonna("G8:G" & UR), dopo quelle piene, é lasciata libera perché l'Utente inserisca dei dati di vendita. Nella colonna immediatamente precedente a questa("F8:F" & UR) ci sono le quantitá disponibili per articolo.
Vorrei che, se il valore che immette l'Utente in una cella della colonna("G...) "Q.tá Venduta" é superiore alla corrispondente ("F...)"Q.tá Disponibile", appaia un messaggio di informazione che invita a correggere il dato e pulisca la cella con il dato errato.
Ho pensato di utilizzare il Worksheet_Change(ByVal Target As Range) ed ho scritto:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Intervallo As Range, UR As Long
Dim Res As VbMsgBoxResult
If Target.Count > 1 Then 'scateno l'evento solo quando
Exit Sub 'viene modificata una sola cella
End If
UR = Range("G" & Rows.Count).End(xlUp).Row
Set Intervallo = Range("B8:B" & UR) 'Inserisco il mio intervallo
If Intersect(Target, Intervallo) _
Is Nothing Then 'Se la cella selezionata é vuota
Application.EnableEvents = False 'Inibisco gli eventi
If Not Intersect(Target, Intervallo).Value <= _
Target.Offset(0, -1).Value Then
Res = MsgBox(Prompt:="Quantitá inserita non valida!" _
& vbNewLine _
& vbNewLine _
& "La quantitá venduta non puó essere maggiore della disponibile.", _
Buttons:=vbExclamation, Title:="")
Intersect(Target, Intervallo).Value = ""
End If
Application.EnableEvents = True
End If
End Sub
Peró se provo a scrivere 5 (ad esempio) lí dove il valore nell'Offset(0, - 1) é 3, non accade nulla.. Che cosa sto sbagliando?
Qualcuno puó aiutarmi?