Risultati da 1 a 8 di 8

Discussione: Se modifichi una cella non puoi modificarne un altra



  1. #1
    L'avatar di Bestpaul
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    House
    Età
    59
    Messaggi
    16
    Versione Office
    Libre Office
    Likes ricevuti
    0
    Likes dati
    0

    Se modifichi una cella non puoi modificarne un altra

    Rieccomi,

    ho salvato il foglio di lavoro dopo aver settato in modo che alcune celle potessero essere modificabili. (A1 - B1 - A2 - B2 )

    Volevo fare una cosa diciamo così spinta.

    Atteso che ho impostato senza protezione le celle A1 - B1 che lavorano in coppia e A2 - B2 altrettanto lavorano in coppia

    Come faccio ad impedire di scrivere in A1 e B1 se in A2 e B2 sono presenti valori e viceversa?

    Spero che vi piaccia il mio quesito.

    Ciao

  2. #2

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4025
    Versione Office
    2013
    Likes ricevuti
    1229
    Likes dati
    923
    Ciao Bestpaul,
    non so se in "Libre Office" si possa usare il VBA...
    Comunque con Excel farei una cosa del genere (da scrivere nel modulo di classe "Foglio1"):

    Codice: 
    Option Explicit
    
    
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Campo As Range, messaggio As String
    
    
    Set Campo = [A1:B2]
    messaggio = "Accertarsi che le altre celle siano vuote!!!"
    If Not Intersect(Target, Campo) Is Nothing Then
        If Target.Row = 1 Then
            If Cells(2, 1).Value <> "" Or Cells(2, 2).Value <> "" Then
                MsgBox messaggio, vbOKOnly + vbCritical
                Application.EnableEvents = False
                Application.Undo
            End If
        ElseIf Target.Row = 2 Then
            If Cells(1, 1).Value <> "" Or Cells(1, 2).Value <> "" Then
                MsgBox messaggio, vbOKOnly + vbCritical
                Application.EnableEvents = False
                Application.Undo
            End If
        End If
    End If
    Application.EnableEvents = True
    Set Campo = Nothing
    End Sub
    Allego file di esempio....

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  3. I seguenti utenti hanno dato un "Like"


  4. #3
    L'avatar di ninai
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Barcellona P.G.
    Età
    55
    Messaggi
    1687
    Versione Office
    2010 PC
    Likes ricevuti
    899
    Likes dati
    185
    ciao a tutti
    la soluzione tramite VBA , proposta da cromagno, è sicuramente la più appropriata.
    Qualora non ti fosse possibile, una soluzione tramite convalida dati (ma facilmente violabile).

    in convalida dati, personalizzata, sia in A1 che in B1, metti:
    =E(A2="";B2="")

    voceversa in A2 e B2, metti:
    =E(A1="";B1="")

    i primi che "acchiappa la mela", blocca le altre celle.
    ma , ripeto, la cosa potrebbe aggirarsi con il copia incolla.
    "So che spiegare il proprio problema, in modo comprensibile, richiede un certo impegno ed è un lavoro "palloso", ma qualcuno lo deve pur fare ....., indovina chi?" (Cit. "Scossa")

  5. #4
    L'avatar di Bestpaul
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    House
    Età
    59
    Messaggi
    16
    Versione Office
    Libre Office
    Likes ricevuti
    0
    Likes dati
    0
    Caro Cromagno,

    VBA su libre office funziona seguendo questa procedura:

    Menù Strumenti/Macro/organizza macro/LibreOfficeBasic

    Sotto cartella del foglio di lavoro sul quale sto lavorando ho aperto Module1

    Ho rimosso

    REM ***** BASIC *****
    Sub Main
    End Sub



    ed Aggiunto

    Rem Attribute VBA_ModuleType=VBAModule
    Option VBASupport 1

    dopidichè ho incollato :

    Option Explicit




    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Campo As Range, messaggio As String




    Set Campo = [A1:B2]
    messaggio = "Accertarsi che le altre celle siano vuote!!!"
    If Not Intersect(Target, Campo) Is Nothing Then
    If Target.Row = 1 Then
    If Cells(2, 1).Value <> "" Or Cells(2, 2).Value <> "" Then
    MsgBox messaggio, vbOKOnly + vbCritical
    Application.EnableEvents = False
    Application.Undo
    End If
    ElseIf Target.Row = 2 Then
    If Cells(1, 1).Value <> "" Or Cells(1, 2).Value <> "" Then
    MsgBox messaggio, vbOKOnly + vbCritical
    Application.EnableEvents = False
    Application.Undo
    End If
    End If
    End If
    Application.EnableEvents = True
    Set Campo = Nothing
    End Sub

    Cosi facendo funziona.

    Il messaggio del popup ho intuito che è modificabile.

    Ciò che non so è come modificare la macro per far si che (fermo restando la funzione protezione SI e NO) le celle da completare anziché essere [A1:A2] - [B1:B2] fossero [D30 e D34] - [D41 e D45]

    Grazie ;)

  6. #5

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4025
    Versione Office
    2013
    Likes ricevuti
    1229
    Likes dati
    923
    Ciao,
    si, naturalmente il corpo del messaggio puoi modificarlo a tuo piacimento.
    Mentre... se le celle sono quelle (D30,D34,D41,D45), il codice dovresti modificarlo così:

    Codice: 
    Option Explicit
    
    
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Campo As Range, messaggio As String
    
    
    Set Campo = Union([D30], [D34], [D41], [D45])
    messaggio = "Accertarsi che le altre celle siano vuote!!!"
    If Not Intersect(Target, Campo) Is Nothing Then
        If Target.Row = 30 Or Target.Row = 34 Then
            If Range("D41").Value <> "" Or Range("D45").Value <> "" Then
                MsgBox messaggio, vbOKOnly + vbCritical
                Application.EnableEvents = False
                Application.Undo
            End If
        ElseIf Target.Row = 41 Or Target.Row = 45 Then
            If Range("D30").Value <> "" Or Range("D34").Value <> "" Then
                MsgBox messaggio, vbOKOnly + vbCritical
                Application.EnableEvents = False
                Application.Undo
            End If
        End If
    End If
    Application.EnableEvents = True
    Set Campo = Nothing
    End Sub
    Ti riallego il file...

    P.S.
    -) Ho utilizzato "Union" in quanto le celle non sono contigue come prima e questo metodo serve proprio per unire diversi range come se fosse uno.

    -) Per indicare ad esempio la cella D30, puoi scrivere indifferentemente (anche se non è proprio così) :
    Range("D30") oppure cells(30,4) oppure [D30]

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  7. #6
    L'avatar di Bestpaul
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    House
    Età
    59
    Messaggi
    16
    Versione Office
    Libre Office
    Likes ricevuti
    0
    Likes dati
    0
    Grande:285:

  8. #7

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4025
    Versione Office
    2013
    Likes ricevuti
    1229
    Likes dati
    923
    Citazione Originariamente Scritto da Bestpaul Visualizza Messaggio
    Grande:285:
    Grazie del riscontro :191:

    Se il problema è stato risolto segna questa discussione come [RISOLTO]
    Vai nella barra dei menu, situata all’inizio di questa discussione, troverai il menu “Strumenti Discussione” quindi scegli “Segna questo Thread come risolto”.

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  9. #8
    L'avatar di Bestpaul
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    House
    Età
    59
    Messaggi
    16
    Versione Office
    Libre Office
    Likes ricevuti
    0
    Likes dati
    0
    :286:

Discussioni Simili

  1. [Risolto] Ricerca di parte di una stringa in una cella con restituzione del contenuto di un'altra cella
    Di MartaL. nel forum Domande su Excel in generale
    Risposte: 8
    Ultimo Messaggio: 06/03/17, 11:45
  2. [Risolto] LISTATO Step1: Estrarre dati da cella in base con condizione di altra cella
    Di Antonio57 nel forum Domande su Excel VBA e MACRO
    Risposte: 5
    Ultimo Messaggio: 23/02/17, 21:23
  3. Cambiare automaticamente in una cella di ultimo valore aggiunto in un'altra cella
    Di H3lL0wEeN nel forum Domande su Excel in generale
    Risposte: 9
    Ultimo Messaggio: 15/01/17, 22:59
  4. Inserire il valore di una cella filtrata in una cella di un'altra pagina
    Di ortofrutta_palladino nel forum Domande su Excel in generale
    Risposte: 3
    Ultimo Messaggio: 02/08/16, 12:36
  5. Inserire in testo presente nella cella un valore ricavato da un altra cella
    Di Bestpaul nel forum Domande su Excel in generale
    Risposte: 5
    Ultimo Messaggio: 07/12/15, 17:05

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •