Condividi:        

worksheet change con comportamento curioso

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

worksheet change con comportamento curioso

Postdi wallace&gromit » 17/11/17 11:06

Ciao,
ho adattato queste macro worksheet change per fare in modo di controllare il valore di tre differenti opzioni:
nelle colonne da C a E ho su ogni riga la possibilità di scegliere una posizione che assume valore 1, e le altre due diventano (o restano 0).
Il comando selection change funziona sempre con il clic.
Per azzerare tutto ho un comando before doubleclic.
Il comportamento curioso è questo: se definisco come target lo stesso range per le due funzioni, facendo doppio clic non parte quella routine ma entra in gioco la selection change. Se invece come target del doppio clic aggiungo anche la colonna F tutto funziona come deve.
Vorrei capire come mai succede questo.
Codice: Seleziona tutto
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
CheckArea = "C3:F100"
If Not Intersect(Target(1, 1), Range(CheckArea)) Is Nothing Then
RigAttiva = Target(1, 1).Row
Range(Cells(RigAttiva, 3), Cells(RigAttiva, 5)) = 0
Cells(RigAttiva, 6).Select
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
CheckArea = "C3:E100"
If Not Application.Intersect(Target, Range(CheckArea)) Is Nothing Then
If (Selection.Rows.Count + Selection.Columns.Count) > 2 Then Exit Sub
ColAttiva = ActiveCell.Column
RigAttiva = ActiveCell.Row
Range(Cells(RigAttiva, 3), Cells(RigAttiva, 5)) = 0
Cells(RigAttiva, ColAttiva) = 1
Cells(RigAttiva, 6).Select
End If
End Sub
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Sponsor
 

Re: worksheet change con comportamento curioso

Postdi Marius44 » 17/11/17 15:59

Ciao W&G

Prova a togliere Application in questa riga di codice

If Not Application.Intersect(Target, Range(CheckArea)) Is Nothing Then

Fai sapere. Ciao,
Mario
Marius44
Utente Senior
 
Post: 655
Iscritto il: 07/09/15 22:00

Re: worksheet change con comportamento curioso

Postdi wallace&gromit » 17/11/17 16:04

no, continua a presentarsi l'errore
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: worksheet change con comportamento curioso

Postdi Anthony47 » 17/11/17 16:06

Mario mi ha preceduto, ma io non toglierei il controllo dell'area a cui il doppioclick si applica, quanto la selezione della colonna 6 nella SelectionChange
Mi son permesso anche qualche modifica
Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
CheckArea = "C3:E100"
If Not Application.Intersect(Target, Range(CheckArea)) Is Nothing Then
    If (Selection.Rows.Count + Selection.Columns.Count) > 2 Then Exit Sub
    Cells(Target.Row, 3).Resize(1, 3) = Array(1, 0, 0)
    'RigAttiva = ActiveCell.Row
    'Cells(RigAttiva, 6).Select
End If
End Sub

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19228
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: worksheet change con comportamento curioso

Postdi Marius44 » 17/11/17 16:22

Ciao a tutti
ovviamente è migliore il procedimento di Anthony ( :) ) ma a me togliendo quella "parolina" funzionava tutto.

Ciao
Mario
Marius44
Utente Senior
 
Post: 655
Iscritto il: 07/09/15 22:00

Re: worksheet change con comportamento curioso

Postdi wallace&gromit » 17/11/17 16:59

rieccomi,
no la soluzione di Anthony non fa quello che deve: al clic mi mette sempre un 1 in riga C, indipendentemente dal punto in cui clicco.
Però effettivamente se tolgo dalla mia macro originale la selezione della cella adiacente la cosa funziona, ma non mi piace, perché rimane il focus sulla cella appena cliccata e questo non lo vorrei.

P.S. in colonna C ovviamente
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: worksheet change con comportamento curioso

Postdi Zer0Kelvin » 17/11/17 18:49

Ciao.
Una bella bacchettata ci starebbe bene. :lol:
All'interno di Selection_Change hai inserito un'istruzione
Codice: Seleziona tutto
Cells(RigAttiva, 6).Select
che modifica la selezione e quindi l'evento viene richiamato ricorsivamente! :evil: In questi casi occorre disabilitare gli eventi
Codice: Seleziona tutto
Application.EnableEvents = False
ad inizio routine e riabilitarli alla fine.

PS: quando una routine di evento non fa il suo dovere, per capire cosa succede, è quasi sempre una buona idea impostare un punto di interruzione e proseguire l'esecuzione passo-passo(tasto F8).
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
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)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 388
Iscritto il: 08/04/12 11:23

Re: worksheet change con comportamento curioso

Postdi Anthony47 » 17/11/17 20:09

Mi permetto di ribadire che e' il Select che bisogna eliminare, semplicemente perche' impedisce il doppioclick sulle celle volute...
Perche' e' evidente (dall'osservazione) che l'evento SelectionChange viene processato prima dell'evento DoppioClick, e quando si avvera il doppioclick oramai la selezione non e' piu' quella originale.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19228
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: worksheet change con comportamento curioso

Postdi wallace&gromit » 17/11/17 21:04

Anthony47 ha scritto:l'evento SelectionChange viene processato prima dell'evento DoppioClick, e quando si avvera il doppioclick oramai la selezione non e' piu' quella originale.

Ecco chiarito l'arcano. E capisco anche le bacchettate di 0K. Insomma senza capire cosa facevo ho fatto la cosa giusta, estendere il campo del doppio clic alla colonna in cui termina il worksheet change. Adesso che lo so lo tengo così e ci convivo, come detto non voglio rinunciare alla selezione della colonna F alla fine delle macro.
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21


Torna a Applicazioni Office Windows


Topic correlati a "worksheet change con comportamento curioso":


Chi c’è in linea

Visitano il forum: Nessuno e 88 ospiti

cron