Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Nome non univoco VBA e correzione codice per svuotare cella

Ultimo Aggiornamento: 15/06/2015 14:37
Post: 84
Registrato il: 07/05/2015
Età: 35
Utente Junior
2010
OFFLINE
15/06/2015 13:06

Ragazzi se provo a far andare queste macro mi da come errore "Rilevato nome non univoco: Worksheet_Change" quindi immagino che si debba cambiare, ma se si cambia il nome non funzionano piùa dovere le macro (credo), quindi penso si possano incorporare in una sola macro, sempre su Worksheet_Change, tutte queste deduzioni le ho fatte da solo, quindi potrebbero essere errate nel caso correggettemi senza problema :) questi sono i due codici:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2")) Is Nothing Then
r = Range("H2")
On Error GoTo esci
If Len(Cells(r + 1, Target.Column)) <> 0 Then
Cells(r + 2, Target.Column).Select
Else
Cells(r + 2, Target.Column + 1).Select
End If
End If
esci:
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:A")) Is Nothing Then
r = Target.Value
On Error GoTo esci
If Target.Value <> PrecValue Then
Cells(Target.Row, Target.Column + 1) = ""
End If
End If
esci:
End Sub

Il primo codice è quello che mi ha fornito Domenico, leggermente riadattato da me per fare ciò che mi serve, funziona alla perfezione!!!
Il secondo codice l'ho copiato un po' da quello sopra (per la parte iniziale, quindi magari ho fatto errori, dato che non ho ben capito come a cosa serve con precisione Intersect) poi ho scritto ciò che sperosia giusto, in pratica vorrei che se in colonna A cambia il valore di una cella si svuoti la cella alla sua destra (stessa riga, colonna +1).
Questo mi serve perché ho tanti elenchi ed ho notato che se in un elenco scelgo una voce, nell'elenco a fianco scelgo una voce tra quelle possibili e poi cambio la voce del primo elenco resta salvata nel secondo elenco la voce relativa al primo elenco rischiando errori (allego anche un file che non da errore perché contiene solo la seconda macro). Spero mi possiate aiutare, se avete bisogno di qualsiasi altra spiegazione non esitate :)

 

Post: 84
Registrato il: 07/05/2015
Età: 35
Utente Junior
2010
OFFLINE
15/06/2015 14:05

Seconda parte risolta
Riduco il problema,
ho risolto il codice VBA e funziona, ora non mi resta solo che sconfiggere "Rilevato nome non univoco: Worksheet_Change", se qualcuno sa come si fa mi faccia sapere :)

Se avete bisogno dei nuovi codici VBA fatemi sapere che li aggiungo (non so se debbano necessariamente essere uniti in un'unico codice essendo entrambi Worksheet_Change) [SM=x423023]
Post: 761
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Senior
Excel 365
ONLINE
15/06/2015 14:21

Ciao Teo

Credo che sia proprio quello il problema.

Non credo possano coesistere due routine con lo stesso nome (penso sia per questo che VBA ti dica "nome non univoco")
[Modificato da alfrimpa 15/06/2015 14:21]

Alfredo
Post: 4.367
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
15/06/2015 14:25

Evento Change
Ciao Teo, ci deve essere un solo worksheet_Change, ma nella stessa macro puoi inserire più parti, prendi la sezione di una macro

If not intersect(Target, etc...
.
Codice
.
end if


ed aggiungila dopo la prima sezione nella stessa macro, logico che non dovranno esserci conflitti tra le due.

Ciao By Sal [SM=x423051]

se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 85
Registrato il: 07/05/2015
Età: 35
Utente Junior
2010
OFFLINE
15/06/2015 14:26

Buongiorno Alfredo,
eh la penso anche io come te ahimé,
solo che non riesco a "fondere" i due codici in uno solo e non so davvero come fare...suggerimenti?provo a postarti qui sotto i miei due codici (magari anche ad altri utenti possono essere utili per risolvere questo grattacapo)

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("BL:BL")) Is Nothing Then
r = Target.Value
On Error GoTo esci
If Target.Value <> PrecValue Then
Cells(Target.Row, Target.Column + 1) = ""
End If
If Len(Target.Value) = 0 Then
Cells(Target.Row, Target.Column + 1) = ""
End If
End If
esci:
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("BL2")) Is Nothing Then
r = Range("CB2")
On Error GoTo esci
If Len(Cells(r + 1, Target.Column)) <> 0 Then
Cells(r + 2, Target.Column).Select
Else
Cells(r + 2, Target.Column + 1).Select
End If
End If
esci:
End Sub


Presi singolarmente fanno ciò che devono fare onestamente, solo che mi servirebbero in contemporanea :/
Ho lasciato invariati anche i riferimenti alle celle che uso io ("BL2" etc etc), qualsiasi suggerimento è ben accetto!!! :)  
Post: 86
Registrato il: 07/05/2015
Età: 35
Utente Junior
2010
OFFLINE
15/06/2015 14:27

Sal, buongiorno, abbiamo scritto praticamente in contemporanea, ora provo a fare come suggerito ;) vediamo cosa riesco a fare ;)

Grazie mille!!!
Post: 87
Registrato il: 07/05/2015
Età: 35
Utente Junior
2010
OFFLINE
15/06/2015 14:37

Risolto direi, modificato le parti che andavano in conflitto, direi che funziona tutto fin troppo bene ahah ;) grazie mille ragazzi!!!

Codice "fuso" in questo modo:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("BL:BL")) Is Nothing Then
r = Target.Value
On Error GoTo esci
If Target.Value <> PrecValue Then
Cells(Target.Row, Target.Column + 1) = ""
End If
If Len(Target.Value) = 0 Then
Cells(Target.Row, Target.Column + 1) = ""
End If
End If
If Not Intersect(Target, Range("BL2")) Is Nothing Then
k = Range("CB2")
On Error GoTo out
If Len(Cells(k + 1, Target.Column)) <> 0 Then
Cells(k + 2, Target.Column).Select
Else
Cells(k + 2, Target.Column + 1).Select
End If
End If
out:
esci:
End Sub
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 22:33. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com