Pagina precedente | 1 2 3 4 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

messaggio di errore con due celle piene

Ultimo Aggiornamento: 21/06/2020 09:46
Post: 141
Registrato il: 02/04/2010
Città: MILANO
Età: 54
Utente Junior
2002
OFFLINE
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
Post: 3.987
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
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
Post: 788
Registrato il: 24/04/2004
Città: TERAMO
Età: 63
Utente Senior
2010
OFFLINE
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)
Post: 591
Registrato il: 16/08/2015
Città: CORDENONS
Età: 67
Utente Senior
Excel 2016-32bit Win11
OFFLINE
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)
Post: 141
Registrato il: 02/04/2010
Città: MILANO
Età: 54
Utente Junior
2002
OFFLINE
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
Post: 789
Registrato il: 24/04/2004
Città: TERAMO
Età: 63
Utente Senior
2010
OFFLINE
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)
Post: 142
Registrato il: 02/04/2010
Città: MILANO
Età: 54
Utente Junior
2002
OFFLINE
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
Post: 3.544
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
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
Post: 143
Registrato il: 02/04/2010
Città: MILANO
Età: 54
Utente Junior
2002
OFFLINE
06/11/2017 15:17

pero nessun codice specifica il nome del foglio, come quello che ho postato io che specifica "nov"
excel 2003
Post: 3.988
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
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
Post: 147
Registrato il: 02/04/2010
Città: MILANO
Età: 54
Utente Junior
2002
OFFLINE
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
Post: 3.989
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
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
Post: 148
Registrato il: 02/04/2010
Città: MILANO
Età: 54
Utente Junior
2002
OFFLINE
07/11/2017 13:36

fatto
excel 2003
Post: 3.990
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
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
Post: 149
Registrato il: 02/04/2010
Città: MILANO
Età: 54
Utente Junior
2002
OFFLINE
08/11/2017 09:06

devo aver sbagliato qualcosa...adesso dovrebbe esserci
excel 2003
Post: 158
Registrato il: 02/04/2010
Città: MILANO
Età: 54
Utente Junior
2002
OFFLINE
09/11/2017 22:14

Patel adesso c'è?
excel 2003
Post: 3.996
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
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
Post: 159
Registrato il: 02/04/2010
Città: MILANO
Età: 54
Utente Junior
2002
OFFLINE
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
Post: 3.997
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
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
Post: 160
Registrato il: 02/04/2010
Città: MILANO
Età: 54
Utente Junior
2002
OFFLINE
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
Post: 3.998
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
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
Post: 161
Registrato il: 02/04/2010
Città: MILANO
Età: 54
Utente Junior
2002
OFFLINE
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
Post: 4.000
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
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
Post: 162
Registrato il: 02/04/2010
Città: MILANO
Età: 54
Utente Junior
2002
OFFLINE
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
Post: 4.001
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
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
Post: 163
Registrato il: 02/04/2010
Città: MILANO
Età: 54
Utente Junior
2002
OFFLINE
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
Post: 4.002
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
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
Post: 164
Registrato il: 02/04/2010
Città: MILANO
Età: 54
Utente Junior
2002
OFFLINE
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
Post: 165
Registrato il: 02/04/2010
Città: MILANO
Età: 54
Utente Junior
2002
OFFLINE
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
Post: 166
Registrato il: 02/04/2010
Città: MILANO
Età: 54
Utente Junior
2002
OFFLINE
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
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 2 3 4 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 13:50. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com