Vorrei apprendere come impedire, in un determinato range di celle,
l'inserimento di valori duplicati (ad esempio codici articolo).
Esistono automatismi attivabili dall'interfaccia per fare ci�, oppure si
deve ricorrere a una macro VB?
E in tal caso come operare?
Ringrazio preventivamente i puri di cuori che mi possano dare una dritta
;-)
Ciao a tutti: Simone
Ciao Simone...
Ho approfittato per salutarti visto che ormai non frequento più..., ma
per te faccio un'eccezione e mi soffermo.
Excel consente di definire un Range di celle ed eseguire un ciclo al
suo interno, ovviamente puoi sfruttare la Collection Cells
indicizzando Row,Col per fare la stessa cosa...
L'evento da usare credo potrebbe essere questo, ma da gestire a dovere
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
....
End Sub
Ovviamente devi testare l'attivazione della cella da controllare ed al
sduccessivo evento, che si verifica su spostamento, vai a leggere il
valore della cella...
In questo modo puoi emulsre un evento EXIT...
Nella guida di Excel trovi questo:
Set r = Range("myRange")
For n = 1 To r.Rows.Count
If r.Cells(n, 1) = r.Cells(n + 1, 1) Then
MsgBox "Duplicate data in " & r.Cells(n + 1, 1).Address
End If
Next n
ovviamente adattalo.
Per il resto come va...? è un sacco di tempo che non ci incrociamo
più...
ciao
@Alex
> Ringrazio preventivamente i puri di cuori che mi possano dare una dritta
> ;-)
>
> Ciao a tutti: Simone
Ciao Simone...
Ho approfittato per salutarti visto che ormai non frequento pi�..., ma
per te faccio un'eccezione e mi soffermo.
Excel consente di definire un Range di celle ed eseguire un ciclo al
suo interno, ovviamente puoi sfruttare la Collection Cells
indicizzando Row,Col per fare la stessa cosa...
L'evento da usare credo potrebbe essere questo, ma da gestire a dovere
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
....
End Sub
Ovviamente devi testare l'attivazione della cella da controllare ed al
sduccessivo evento, che si verifica su spostamento, vai a leggere il
valore della cella...
In questo modo puoi emulsre un evento EXIT...
Nella guida di Excel trovi questo:
Set r = Range("myRange")
For n = 1 To r.Rows.Count
If r.Cells(n, 1) = r.Cells(n + 1, 1) Then
MsgBox "Duplicate data in " & r.Cells(n + 1, 1).Address
End If
Next n
ovviamente adattalo.
>
>
>
Alessandro sei grande come sempre: ti ringrazio molto per la cortesia ...
oltre che per lo spunto!
In effetti adattando l'esempio come segue:
Private Sub Worksheet_Selectionchange(ByVal Target As Range)
Dim n As Long
'Set r = Range("myRange")
With Worksheets("Foglio1")
For n = 1 To 10
If .Cells(n, 6).Value = ActiveCell.Value And _
.Cells(n, 6).Address <> ActiveCell.Address Then
MsgBox .Cells(n, 6).Value & " dati duplicati in
" .Cells(n, 6).Address
End If
Next n
End With
End Sub
Ottengo su "evento" attivazione della cella la ricerca (ed eventuale
segnalazione) di valori duplicati nella colonna.
Il problema � che non riesco ad individuare un evento "exit" (o "prima di
aggiornare") dalla cella, e non mi � chiaro come simularlo.
Colgo l'occasione per un'ultima domanda (ultima davvero) su Excel: sto
tentando proprio ora di richiamare nelle celle funzioni personalizzate
scritte nell'editor Visual Basic.
Semplicemente scrivo in una qualunque cella: =MiaFunzione()
Dove MiaFunzione() esegue dei cicli in determinati range, effettua dei
calcoli, e restituisce un risultato.
Purtroppo non funziona: hai idea di come si possa ottenere questa cosa, cos�
immediata con Access?
>
>
Per il resto come va...? � un sacco di tempo che non ci incrociamo
pi�...
>
>
Beh, in effetti da un anno a questa parte ho poco tempo (e forse anche
voglia) di frequentare lo usenet: sono proprio sparito!
Ma da qualche giorno sto lurkando sull'area e chiss� che non mi ritorni
l'entusiasmo ;-)
Il fatto � che le richieste d'aiuto sono molto pi� specifiche e complesse di
un tempo: non � pi� tanto facile rispondere con cognizione di causa.
Comunque sviluppo ancora principalmente con il caro Access (XP e 2003)...
E tu che fai di bello?
Cari saluti: Simone
Come ti dicevo non esiste quell'evento... ma se memorizzi in una
Variabile a livello di modulo, il nome della cella, puoi settare un
FLAG quando la attivi e generare l'evento quando, letto FLAG=1 la
cella attivata cambia.. è
sintomo che prima eri sulla cella da testare ed il nuovo Evento ora è
stato generato da una nuova cella... è ovviamente un trucchetto ma non
ho soluzioni.
Se voui essere raffinato, crea una Clase e definisci on evento publi
di Classe e lo generi ogni volta che viene geerato l'evento
SelectionChange... con la possibilità del Cancel...
Sembra un doppione ma fa esattamente quello che dici, e se, nel nuovo
evento passi come parametri la Vecchia Cella e la Nuova con il Cancel
sei a cavallo, se poi usi una classe intetrfaccia puoi ribaltare
l'evento direttamente nel Workbook come se fosse un nuovo evento...
Chiaramente è una finezza che mi permetto di suggerire a te conoscendo
il tuo livello... ;-)
> Colgo l'occasione per un'ultima domanda (ultima davvero) su Excel: sto
> tentando proprio ora di richiamare nelle celle funzioni personalizzate
> scritte nell'editor Visual Basic.
> Semplicemente scrivo in una qualunque cella: =MiaFunzione()
> Dove MiaFunzione() esegue dei cicli in determinati range, effettua dei
> calcoli, e restituisce un risultato.
> Purtroppo non funziona: hai idea di come si possa ottenere questa cosa, così
> immediata con Access?
Leggi questo:
http://forum.masterdrive.it/vba-tutorials-and-how-to-37/vba-excel-formule-personalizzate-46804/
> Per il resto come va...? è un sacco di tempo che non ci incrociamo
> più...
>
>
>
> Beh, in effetti da un anno a questa parte ho poco tempo (e forse anche
> voglia) di frequentare lo usenet: sono proprio sparito!
Siamo in più di 2 a soffrire diquesto...
> Ma da qualche giorno sto lurkando sull'area e chissà che non mi ritorni
> l'entusiasmo ;-)
> Il fatto è che le richieste d'aiuto sono molto più specifiche e complesse di
> un tempo: non è più tanto facile rispondere con cognizione di causa.
> Comunque sviluppo ancora principalmente con il caro Access (XP e 2003)...
Beato te...
> E tu che fai di bello?
rincipalmente per cambio ruolo in azienda ho abbandonato completamente
qualsiasi rapporto con la programmazione, ho preso una strada più di
coordinamento e gestionale...
Tutto sommato è avvenuto in un momento di completa disaffezione, avevo
anche iniziato con VB.NET... pessima idea per me... vedremo se il C#
mi fa tornare un pò di passione
per la programmazione OOP...
Purtroppo ora sono a casa 2mesi per un'intervento di manutenzione alla
spalla DX, distrutta dal nuoto, e poi dicono che nuotare fa
bene... ;-) quindi comprendi anche la mia fatica di partecipare con la
SX...
> Cari saluti: Simone
Ciao, mi ha fatto piacere risentirti.
@Alex
Azzzz.... Alessà, e manco la forza di "appicciare" MSN tieni? :D
Si ma non con il laptop di lavoro nun se pole...
purtroppo di giorno lavoro anche stando a casa in VPN aziendale
tramite chiavetta, e le policy non consentono l'uso di MSN.
Di fatto alcuni gg verso le 18 accendo il mio portatile personale
proprio per questo, se ti becco ti saluto volentieri.
Ciao Maurizio
@Alex
(cut)
Alessandro, grazie infinite per i preziosi suggerimenti: ho ottenuto tutto
quello che mi serviva ;-)
Sei proprio grande...
>
>
Purtroppo ora sono a casa 2mesi per un'intervento di manutenzione alla
spalla DX, distrutta dal nuoto, e poi dicono che nuotare fa
bene... ;-) quindi comprendi anche la mia fatica di partecipare con la
SX...
>
Due mesi? Cazzo, ma che c'hai fatto alla spalla?!
Un enorme in bocca al lupo per una completa guarigione @Alex.
Salutoni da Simone
Detta da te si che mi torna voglia di partecipare ancora....
.....
>
> Due mesi? Cazzo, ma che c'hai fatto alla spalla?!
> Un enorme in bocca al lupo per una completa guarigione @Alex.
Ho distrutto un tendine e staccato completamente il menisco, cercine
nella spalla, quindi mi
hanno messo dei pezzetti di titanio e dello svitol per riparare...
Riassumendo ho 30gg di immobilizzazione, 2 mesi di fisioterapia... e 4
mesi di astensione lavori manuali
8 mesi prima di tornare a nuotare...
Il problema di base è quanto tempo servirà per riabilitare il
movimento tanto per guidare la macchina che ora mi è vietato, ed
avendo 40+40Km per
andare al lavoro ecco i 2 mesi che dicevo....
> Salutoni da Simone
Ciao
Alla prossima.
@Alex
Ahi! Pronta guarigione!
--
Ciao
Karl
*********
Access FAQ: http://www.donkarl.com/it
Grazie Karl, gentilissimo.
@Alex