Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Ivo, ciao Franco,
no
ti basta variare il range
If Not Intersect(Target, Range("A1:A100")) Is Nothing Then
in questo caso se scrivi da A1 ad A100 ti verrà il messaggio
per il valore vecchio
viene registrato con questo
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Valvecchio = Target.Value
End Sub
se clicchi su no viene riconfermato
se clicchi su si viene sovrascritto
Con l'utilizzo della procedura Worksheet_Change, al fine di prevenire chiamate ricorsive ripetute alla procedura, e' molto importante disattivare gli eventi prima di effettuare una modifica e riattivare gli eventi successivamente.
Pertanto, forse prova qualcosa del genere:
'=========>>
Option Explicit
'--------->>
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, rCell As Range
Dim vOld As Variant, vNew As Variant
Dim Res As VbMsgBoxResult
Const sIntervallo As String = "A1:A10" '<<=== Modifica
Set Rng = Intersect(Target, Me.Range(sIntervallo))
If Not Rng Is Nothing Then
If Rng.Cells.Count > 1 Then
Exit Sub
End If
vNew = Rng.Value
If vNew = vbNullString Then
vNew = " vuota "
End If
On Error GoTo XIT:
With Application
.ScreenUpdating = False
.EnableEvents = False
.Undo
vOld = Rng.Value
If vOld = vbNullString Then
vOld = " vuota "
End If
Res = MsgBox( _
Prompt:="Sicuro che vuoi sostituire il valore " _
& vOld _
& "con il valore " _
& vNew, _
Buttons:=vbYesNo, _
Title:="REPORT")
End With
If Res = vbYes Then
Rng.Value = vNew
End If
End If
XIT: With Application
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
'<<=========
===
Regards,
Norman