Excel Forum Per condividere esperienze su Microsoft Excel

messaggio di errore con due celle piene

  • Messaggi
  • OFFLINE
    trittico69
    Post: 141
    Registrato il: 02/04/2010
    Città: MILANO
    Età: 54
    Utente Junior
    2002
    00 05/11/2017 18:12
    salve mi hanno aiutato a fare questo codice

    Dim q, S As Range
    For Each q In Sheets("nov ").Range("C14:C60")
    For Each S In Sheets("nov ").Range("j14:j60")
    If q.Value <> "" And S.Value <> "" Then
    Target = ""
    MsgBox "non puoi scrivere in questa cella se la colonna C o D non è vuota " & q.Value & " " & S.Value
    Exit Sub
    End If
    Next
    Next
    End Sub

    in pratica se la colonna C non è vuota non posso scrivere nella colonna j e viceversa
    ma nonostante la colonna C sia vuota non mi fa scrivere nella colonna J.
    potete aiutarmi a correggere l'errore?
    grazie
    excel 2003
  • OFFLINE
    patel45
    Post: 3.987
    Registrato il: 13/03/2012
    Città: LIVORNO
    Età: 78
    Utente Master
    2010
    00 05/11/2017 19:48
    ormai dovresti sapere che è meglio allegare un file di esempio, oltretutto hai omesso la sub che immagino sia del tipo
    Worksheet_SelectionChange, comunque prova questa
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 3 Or Target.Column = 10 Then
      If Target.Column = 3 Then
        For Each S In Range("j14:j60")
          If S.Value <> "" Then
            MsgBox "non puoi scrivere in questa cella se colonna J non è vuota "
            Exit Sub
          End If
        Next
      Else
        For Each q In Range("C14:C60")
          If q.Value <> "" Then
            MsgBox "non puoi scrivere in questa cella se colonna C non è vuota "
            Exit Sub
          End If
        Next
      End If
    End If
    End Sub
    [Modificato da patel45 05/11/2017 20:51]

    ----------
    Win 10 - Excel 2010
    allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
  • OFFLINE
    Zer0kelvin
    Post: 788
    Registrato il: 24/04/2004
    Città: TERAMO
    Età: 63
    Utente Senior
    2010
    00 05/11/2017 22:59
    Ciao.
    Un'alternativa che utilizza invece Worksheet_Change
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim R As Range, Cella As Range
    Dim Colonna As String
        Application.EnableEvents = False
        If Not Intersect(Target, Range("J14:J60")) Is Nothing Then
            Set R = Range("C14:C60")
            Colonna = " C "
        ElseIf Not Intersect(Target, Range("C14:C60")) Is Nothing Then
            Set R = Range("J14:J60")
            Colonna = " J "
        End If
        If Not R Is Nothing Then
            For Each Cella In R.Cells
                If Cella <> "" Then
                    Target = ""
                    MsgBox "Non puoi scrivere in questa cella se colonna" & Colonna & "non è vuota."
                    Exit For
                End If
            Next Cella
        End If
        Set R = Nothing
        Application.EnableEvents = True
    End Sub
    
    __________________________
    [Excel 2010]
    -Condividere la conoscenza aumenta la ricchezza di tutti.
    -Dai ad un uomo un pesce e lo avrai sfamato per un giorno; insegnagli a pescare e lo avrai sfamato per sempre. (Confucio)
    -Il sonno della ragione genera mostri. (Francisco Goya)
  • OFFLINE
    rollis13
    Post: 591
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Senior
    Excel 2016-32bit Win11
    00 05/11/2017 23:00
    Un saluto a tutti.
    Come spesso capita arrivo tardi, tant'è, ecco la mia diversa versione di macro:
    Option Explicit
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
        If Intersect(Target, Uni0n(Range("C14:C60"), Range("J14:J60"))) Is Nothing Then Exit Sub
        Select Case Target.Column
            Case 3
                If WorksheetFunction.CountA(Range("J14:J60")) > 0 Then
                    MsgBox "Non puoi scrivere in questa cella se colonna J non è vuota"
                    Exit Sub
                End If
            Case 10
                If WorksheetFunction.CountA(Range("C14:C60")) > 0 Then
                    MsgBox "Non puoi scrivere in questa cella se colonna C non è vuota"
                    Exit Sub
                End If
        End Select
    
    End Sub

    Per la precisione Uni0n si scrive Union (con la "o" e non con lo "zero")
    [Modificato da rollis13 05/11/2017 23:20]

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    trittico69
    Post: 141
    Registrato il: 02/04/2010
    Città: MILANO
    Età: 54
    Utente Junior
    2002
    00 06/11/2017 10:20
    ho provato con tutti i codici che mi avete proposto ma ogni codice mi da un errore diverso...evidentemente sbaglio qualcosa...vi allego un file di esempio.
    grazie
    excel 2003
  • OFFLINE
    Zer0kelvin
    Post: 789
    Registrato il: 24/04/2004
    Città: TERAMO
    Età: 63
    Utente Senior
    2010
    00 06/11/2017 14:04
    1)La visualizzazione protetta di Excel mi impedisce di visualizzare il progetto VBA, sembra esserci qualche problema nel tuo file.
    2)

    ogni codice mi da un errore diverso...

    e sarebbe bellissimo sapere quali... [SM=x423038]
    __________________________
    [Excel 2010]
    -Condividere la conoscenza aumenta la ricchezza di tutti.
    -Dai ad un uomo un pesce e lo avrai sfamato per un giorno; insegnagli a pescare e lo avrai sfamato per sempre. (Confucio)
    -Il sonno della ragione genera mostri. (Francisco Goya)
  • OFFLINE
    trittico69
    Post: 142
    Registrato il: 02/04/2010
    Città: MILANO
    Età: 54
    Utente Junior
    2002
    00 06/11/2017 14:14
    per togliere la protezione basta andare nel foglio riep. e cliccare sul tasto 1.
    per quando riguarda gli errori che danno i vari codici potrebbe essere che non li ho inseriti nel modulo giusto.
    excel 2003
  • OFFLINE
    alfrimpa
    Post: 3.544
    Registrato il: 21/06/2013
    Città: NAPOLI
    Età: 70
    Utente Master
    Excel 365
    00 06/11/2017 14:33
    Il codice va inserito nei moduli di classe dei singoli fogli (non moduli standard) o in quelli di Questa_cartella_di_lavoro (SheetChange o SheetSelectionChange).
    [Modificato da alfrimpa 06/11/2017 14:34]

    Alfredo
  • OFFLINE
    trittico69
    Post: 143
    Registrato il: 02/04/2010
    Città: MILANO
    Età: 54
    Utente Junior
    2002
    00 06/11/2017 15:17
    pero nessun codice specifica il nome del foglio, come quello che ho postato io che specifica "nov"
    excel 2003
  • OFFLINE
    patel45
    Post: 3.988
    Registrato il: 13/03/2012
    Città: LIVORNO
    Età: 78
    Utente Master
    2010
    00 06/11/2017 15:53
    dato che il codice deve stare nel modulo del foglio interessato non c'è bisogno di indicare il nome del foglio

    ----------
    Win 10 - Excel 2010
    allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
  • OFFLINE
    trittico69
    Post: 147
    Registrato il: 02/04/2010
    Città: MILANO
    Età: 54
    Utente Junior
    2002
    00 07/11/2017 12:57
    Per quando riguarda gli errori dei vari codici
    Il primo codice mi da “variante non definita”
    Il sevondo mi da un errore su un altro codice che è gia inserito nel programmino
    Il terzo mi fa conparire il msgbox messaggio di errore nonostante la colonna “C” sia vuota
    excel 2003
  • OFFLINE
    patel45
    Post: 3.989
    Registrato il: 13/03/2012
    Città: LIVORNO
    Età: 78
    Utente Master
    2010
    00 07/11/2017 13:20
    allega il file senza protezioni

    ----------
    Win 10 - Excel 2010
    allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
  • OFFLINE
    trittico69
    Post: 148
    Registrato il: 02/04/2010
    Città: MILANO
    Età: 54
    Utente Junior
    2002
    00 07/11/2017 13:36
    fatto
    excel 2003
  • OFFLINE
    patel45
    Post: 3.990
    Registrato il: 13/03/2012
    Città: LIVORNO
    Età: 78
    Utente Master
    2010
    00 07/11/2017 21:00
    dov'è ? non lo vedo

    ----------
    Win 10 - Excel 2010
    allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
  • OFFLINE
    trittico69
    Post: 149
    Registrato il: 02/04/2010
    Città: MILANO
    Età: 54
    Utente Junior
    2002
    00 08/11/2017 09:06
    devo aver sbagliato qualcosa...adesso dovrebbe esserci
    excel 2003
  • OFFLINE
    trittico69
    Post: 158
    Registrato il: 02/04/2010
    Città: MILANO
    Età: 54
    Utente Junior
    2002
    00 09/11/2017 22:14
    Patel adesso c'è?
    excel 2003
  • OFFLINE
    patel45
    Post: 3.996
    Registrato il: 13/03/2012
    Città: LIVORNO
    Età: 78
    Utente Master
    2010
    00 10/11/2017 08:26
    ora c'è ma nel tuo file non compare nessuno dei codici che ti hanno proposto. Non mi stupisce, ormai da te me lo aspettavo.

    ----------
    Win 10 - Excel 2010
    allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
  • OFFLINE
    trittico69
    Post: 159
    Registrato il: 02/04/2010
    Città: MILANO
    Età: 54
    Utente Junior
    2002
    00 10/11/2017 22:19
    Non ho inserito i codici perché ogni codice mi da un errore e quindi non ne ho messo nessuno.
    Non capisco perché ti sei fatto un'opinione negativa su di me
    excel 2003
  • OFFLINE
    patel45
    Post: 3.997
    Registrato il: 13/03/2012
    Città: LIVORNO
    Età: 78
    Utente Master
    2010
    00 11/11/2017 08:07
    non sono soltanto io ad essermela fatta, vedo che anche gli altri si sono stancati, tu non collabori, aspetti la pappa scodellata e basta.
    1) dopo 140 messaggi fai richieste complicate senza allegare file
    2) alleghi file protetti
    3) non descrivi gli errori
    4) alleghi file senza le macro provate

    un esempio di utente principiante all'opposto di te lo trovi qui
    http://www.forumexcel.it/forum/7-domande-su-excel-vba-e-macro/12213-estrarre-dei-dati-csv-e-importarli-in-un-foglio-execlvba-o-formule-execl
    [Modificato da patel45 11/11/2017 10:19]

    ----------
    Win 10 - Excel 2010
    allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
  • OFFLINE
    trittico69
    Post: 160
    Registrato il: 02/04/2010
    Città: MILANO
    Età: 54
    Utente Junior
    2002
    00 11/11/2017 17:17
    Il File non l'ho allegato subito perché credevo non ce ne fosse bisogno...infatti mi hanno risposto senza...appena mi è stato richiesto l'ho allegato e subito dopo, siccome mi ero semplicemente dimenticato di togliere la protezione, quando mi è stato fatto notare ho subito risposto che si poteva togliere dal foglio "riep" cliccando sul tasto 1...poi mi è stato chiesto di allevarlo senza protezione e l'ho fatto...poi mi è stato chiesto di descrivere gli errori e l'ho fatto...chiedo scusa se non ho pensato tutto e subito...adesso sto scrivendo con il telefonino, appena riesco ad avere un po di tempo alleggero i file con i tre codici, anche se come detto avendo poca esperienza sicuramente sbagliero qualcosa...
    excel 2003
  • OFFLINE
    patel45
    Post: 3.998
    Registrato il: 13/03/2012
    Città: LIVORNO
    Età: 78
    Utente Master
    2010
    00 11/11/2017 19:25
    hai 140 messaggi, non puoi dire di non avere esperienza sul forum, il problema è che non partecipi attivamente, sei passivo, fai il meno possibile aspettando che qualcuno si serva la pappa pronta.
    E' questo il modo migliore per stancare chi avrebbe voluto aiutarti.
    Non ti interessa di imparare, ma solo la soluzione.

    ----------
    Win 10 - Excel 2010
    allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
  • OFFLINE
    trittico69
    Post: 161
    Registrato il: 02/04/2010
    Città: MILANO
    Età: 54
    Utente Junior
    2002
    00 13/11/2017 09:47
    patel devo ringraziarti per aver insistito a non darmi il file servito su un piatto d'argento, perchè stamattina mi sono rimesso ad aggeggiare con i tre codici proposti e con il terzo sono riuscito a farlo funzionare.
    allego il codice completo


    Option Explicit

    Private Sub Worksheet_Calculate()
    Call minuti
    End Sub
    Private Sub Worksheet_Change(ByVal Target As Range) 'questo codice ti segnala con un messaggio se per sbaglio scrivi riposo nella colonna "I" con il codice 2-3-4
    Dim R As Long
    R = Target.Row
    If Not Intersect(Target, [i14:i60]) Is Nothing Then
    If Target = 2 Or Target = 3 Or Target = 4 Then
    Target = ""
    MsgBox "qui va messo solo codice presenza"
    End If
    End If


    If Intersect(Target, Uni0n(Range("C14:C60"), Range("J14:J60"))) Is Nothing Then Exit Sub ' questo codice di da un messaggio di errore se per sbaglio metti riposo lo stesso giorno che hai lavorato
    Select Case Target.Column
    Case 3
    If WorksheetFunction.CountA(Range("J14:J60")) > 0 Then
    MsgBox "Non puoi scrivere in questa cella se colonna J non è vuota"
    Exit Sub
    End If
    Case 10
    If WorksheetFunction.CountA(Range("C14:C60")) > 0 Then
    MsgBox "Non puoi scrivere in questa cella se colonna C non è vuota"
    Exit Sub
    End If
    End Select

    End Sub

    l'unica cosa non sono riuscito a mettere
    Target = ""
    nel secondo codice così come nel primo
    ho provato a metterlo in vari punti del codice ma mi da sempre errore nel modulo2 alla riga
    Set AG = ThisWorkbook.ActiveSheet.Range("AG31")
    allego il file con il codice nel foglio "sett"
    excel 2003
  • OFFLINE
    patel45
    Post: 4.000
    Registrato il: 13/03/2012
    Città: LIVORNO
    Età: 78
    Utente Master
    2010
    00 13/11/2017 11:01
    Re:
    trittico69, 13/11/2017 09.47:


    l'unica cosa non sono riuscito a mettere
    Target = ""
    nel secondo codice così come nel primo
    ho provato a metterlo in vari punti del codice ma mi da sempre errore nel modulo2 alla riga
    Set AG = ThisWorkbook.ActiveSheet.Range("AG31")
    allego il file con il codice nel foglio "sett"


    Sono contento che tu abbia risolto e che tu ti sia applicato.
    Non ho capito cosa intendi dire con la domanda quotata, comunque Target è una variabile valida soltanto nelle sub relative ad eventi e rappresenta la cella modificata, non puoi usarla altrove

    [Modificato da patel45 13/11/2017 11:05]

    ----------
    Win 10 - Excel 2010
    allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
  • OFFLINE
    trittico69
    Post: 162
    Registrato il: 02/04/2010
    Città: MILANO
    Età: 54
    Utente Junior
    2002
    00 13/11/2017 13:26
    è sorto un problema,se metto nel foglio "nov" (dove ho messo il codice) metto orario 08:00 esempio in C35 mi esce il messaggio che non posso inserire in quella cella se J35 non è vuoto...ma J35 é vuoto!
    riallego il file
    [Modificato da trittico69 13/11/2017 13:27]
    excel 2003
  • OFFLINE
    patel45
    Post: 4.001
    Registrato il: 13/03/2012
    Città: LIVORNO
    Età: 78
    Utente Master
    2010
    00 13/11/2017 16:48
    hai allegato un file con j35 vuoto e non esce alcun errore mettendo 8:00 in C35

    ----------
    Win 10 - Excel 2010
    allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
  • OFFLINE
    trittico69
    Post: 163
    Registrato il: 02/04/2010
    Città: MILANO
    Età: 54
    Utente Junior
    2002
    00 14/11/2017 07:49
    scusa pavel ho sbagliato a scrivere il foglio non è "nov" ma "set" mettendo 08:00 in c35 nonostante j35 è vuoto mi da il messaggio box che mi impedisce di scrivere invece lo dovrebbe fare solo se j35 non è vuoto e viceversa
    excel 2003
  • OFFLINE
    patel45
    Post: 4.002
    Registrato il: 13/03/2012
    Città: LIVORNO
    Età: 78
    Utente Master
    2010
    00 14/11/2017 08:02
    a me non dà errore, comunque hai controllato il contenuto delle celle su cui fai il CASE ?

    ----------
    Win 10 - Excel 2010
    allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
  • OFFLINE
    trittico69
    Post: 164
    Registrato il: 02/04/2010
    Città: MILANO
    Età: 54
    Utente Junior
    2002
    00 14/11/2017 09:26
    strano adesso non lo fa neanche a me..non capisco...eppure ho scaricato il file che ho allegato e ho fatto la prova poi ti ho mandato il messaggio che mi dava errore, poi tu mi hai detto che a te non dava errore allora ho riscaricato il file e non da errore neanche a me..
    [Modificato da trittico69 14/11/2017 09:28]
    excel 2003
  • OFFLINE
    trittico69
    Post: 165
    Registrato il: 02/04/2010
    Città: MILANO
    Età: 54
    Utente Junior
    2002
    00 14/11/2017 09:29
    adesso me lo ha rifatto ...erano disattivate le macro...mi è uscito un messaggio in alto al file che dice" le macro sono disattivate" quindi le ho riattivate ed è uscito l'errore....forse erano disattivate anche a te
    [Modificato da trittico69 14/11/2017 09:30]
    excel 2003
  • OFFLINE
    trittico69
    Post: 166
    Registrato il: 02/04/2010
    Città: MILANO
    Età: 54
    Utente Junior
    2002
    00 14/11/2017 09:47
    credo di aver capito...la colonna "J" deve essere tutta vuota...ma a me serve che sia in corrispondenza della riga il vuoto
    excel 2003
1