sovrascrivere celle piene



  • 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