| | 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... __________________________
[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 | |
|
| | 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 | |
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 |
|
|