sovrascrivere celle piene
Hai un problema con Excel? 
sovrascrivere celle piene
di lucas_71 (utente non iscritto) data: 19/10/2017 19:22:50
Buonasera a tutti, volevo chiedere se è possibile inserire in un foglio excel un controllo con relativo msgbox se procedere alla sovrascrittura delle celle piene di un determinato range, nel senso che una volta inserito un valore in una cella come vado per scrivere sulla stessa cella mi chiede se sovrascrivere o meno. Grazie
di alfrimpa data: 19/10/2017 19:55:40
Ciao Lucas_71
Per farlo devi ricorrere al VBA.
Allega un file di esempio indicando su quali celle del foglio vuoi inserire questo controllo.
Alfredo
di lucas_71 (utente non iscritto) data: 19/10/2017 21:58:38
Grazie Alfredo, le colonne interessate sono la E e F.... sempre
di lucas_71 (utente non iscritto) data: 19/10/2017 22:06:28
Volevo precisare che alla fine di ogni colonna sia E che F, ci sarà il saldo in automatico...
di patel data: 20/10/2017 09:04:04
nel modulo del foglio1
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 5 Or Target.Column = 6 Then
If Target <> "" Then MsgBox "cella non vuota"
End If
End Sub |
di lucas_71 (utente non iscritto) data: 20/10/2017 14:35:58
Grazie patel, pero' se è possibile avrei bisogno della funzione,no nel momento in cui mi posiziono sulla cella ma dopo che provo a scrivere e invio...se convalidare o meno la sovrascrittura..non so se mi sono spiegato bene...
di patel data: 21/10/2017 08:38:09
che senso ha ? se ti accorgi di aver sbagliato basta fare Modifica, Annulla
di Zer0Kelvin data: 21/10/2017 10:01:28
Ciao.
Si può usare Worksheet_Change unito ad Application.Undo.
Si può sfruttare invece l'evento SelectionChange per determinare se la cella era vuota prima della modifica.
di patel data: 21/10/2017 10:33:28
ma tu Zer0Kelvin lo faresti per una tua applicazione ?
di Zer0Kelvin data: 21/10/2017 13:33:41
Assolutamente no, ma ognuno ha le proprie idee.
E dopotutto non conosciamo i motivi per cui lucas_71 vuole fare come ha detto; potrebbe avere le sue buone ragioni.
di lucas_71 (utente non iscritto) data: 22/10/2017 16:04:21
Patel io non so se ha senso o no, pero' per quanto riguarda me quel controllo richiesto sara' più efficace a prevenire degli errori di sovrascrittura cella...quel riquadro che ho postato è solo una parte di un foglio excel che poi sara' aperto insieme ad altre maschere, in passato ho commesso alcuni errori di sovrascrittura appunto perchè in velocita non mi sono accorto che il cursore non era posizionato su una maschera ma sul foglio ecc....mi è difficile spiegarlo ma non è un capriccio ....
Si puo' modificare la macro in modo da ottenere un msgbox che chiede se sovrascrivere o meno la cella ? Grazie
di patel data: 22/10/2017 19:28:16
hai detto:
in passato ho commesso alcuni errori di sovrascrittura appunto perchè in velocita non mi sono accorto che il cursore non era posizionato su una maschera ma sul foglio
infatti la mia macro ti permette proprio questo, comunque se proprio ci tieni a rallentare notevolmente l'input dei dati prova questa da inserire nel modulo del foglio interessato
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 5 Or Target.Column = 6 Then
NewVal = Target.Value
Application.EnableEvents = False
Application.Undo
Oldval = Target.Value
If Oldval <> "" Then
If InputBox("Confermi la modifica (s/n) ") = "s" Then Target.Value = NewVal
Else
Target.Value = NewVal
End If
Application.EnableEvents = True
End If
End Sub
|
di lucas_71 (utente non iscritto) data: 23/10/2017 21:36:41
Grazie Patel del codice, ti chiedo se è possibile l'ultima cosa, invece di usare InputBox usare msgbox con si o no..ci ho provato ha modificare il codice ma non ci sono riuscito. Grazie di nuovo
di patel data: 24/10/2017 08:13:53
un esempio di msgbox
Sub MessageBoxExample()
Dim iRet As Integer
Dim strPrompt As String
Dim strTitle As String
' Promt
strPrompt = "Ask Your Question Here, OK?"
' Dialog's Title
strTitle = "My Tite"
'Display MessageBox
iRet = MsgBox(strPrompt, vbYesNo, strTitle)
' Check pressed button
If iRet = vbNo Then
MsgBox "NO!"
Else
MsgBox "Yes!"
End If
End Sub |
di lucas_71 (utente non iscritto) data: 24/10/2017 15:28:25
Che dici patel sembra funzionare....
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 5 And Target.Row < 22 Then ' qui devo ancora sistemare...
NewVal = Target.Value
Application.EnableEvents = False
Application.Undo
oldval = Target.Value
If oldval <> "" Then
Risposta = MsgBox("CONFERMI LA MODIFICA ???", vbYesNo)
If Risposta = vbYes Then Target.Value = NewVal
'If InputBox("Confermi la modifica (s/n) ") = "s" Then Target.Value = newval
Else
Target.Value = NewVal
End If
Application.EnableEvents = True
End If
End Sub |
di patel data: 24/10/2017 20:12:36
solo tu puoi dirlo con certezza se soddisfa i tuoi desideri.
di lucas_71 (utente non iscritto) data: 25/10/2017 22:29:16
ok...spunto come risolta. Grazie di nuovo
Vuoi Approfondire?