Condividi:        

Workbook Sheet Selection Change

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

Workbook Sheet Selection Change

Postdi miko » 25/11/21 20:16

Buonasera,
dopo mesi di inattività ritorno a chiedere il vostro aiuto.
in un file ho un foglio principale e numerosi altri fogli secondari
dal foglio principale selezionando una cella della colonna B, contenente il nome del foglio secondario,
seleziono il foglio secondario.
quando sono nel foglio secondario selezionando una cella vuota del range A1-C2 ritorno al foglio principale.
ho realizzato le seguenti 2 macro che funzionano se prese singolarmente, nel senso che nel file deve essere
presente una delle due
nel modulo del foglio principale ho inserito la seguente macro

Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   
Dim NomeFoglio As String

If Target.Count > 1 Then Exit Sub
   
  On Error GoTo MESSAGGIO
 
  Application.EnableEvents = False
   
  With ThisWorkbook.Worksheets("Main")

    If Not Intersect(Target, .Range("B3:B70")) Is Nothing Then       
     
      NomeFoglio = Target.Value
       
      ThisWorkbook.Worksheets(NomeFoglio).Select

    End If

CONTINUA:

  End With
   
  Application.EnableEvents = True
   
  Exit Sub

MESSAGGIO:
   
  MsgBox Err.Description
   
  Resume CONTINUA
       
End Sub


nel modulo "QUESTA CARTELLA..." ho inserito questo codice

Codice: Seleziona tutto
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

Dim NOME As String
 
  On Error GoTo MESSAGGIO
 
  Application.ScreenUpdating = False
   
  'Application.Calculation = xlManual
   
  Application.EnableEvents = False 
 
  With ThisWorkbook
 
    NOME = ActiveSheet.Name
 
    If NOME <> "Main"  Then
       
      If Not Intersect(Target, Worksheets(NOME).Range("A1:C2")) Is Nothing Then             
               
        ActiveSheet.Range("A1").Select
       
        Worksheets("Main").Select
     
      End If
       
    End If
   
CONTINUA:

  End With
   
  Application.EnableEvents = True
     
  'Application.Calculation = xlCalculationAutomatic
     
  Application.ScreenUpdating = True
   
  Exit Sub

MESSAGGIO:
   
  MsgBox Err.Description
   
  Resume CONTINUA

End Sub


stranamente ricevo messaggio di errore "IL METODO INTERSEC PER L'OGGETTO GLOBAL NON RIUSCITO" ma il foglio secondario viene selezionato.
non capisco dove si trova l'errore e quindi come modificarlo
va bene anche una diversa soluzione del problema
ciao grazie
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44

Sponsor
 

Re: Workbook Sheet Selection Change

Postdi Anthony47 » 26/11/21 10:56

Nel caso che tu sia su foglio Main i due "eventi" si accodano: prima il Worksheet_SelectionChange e poi il Workbook_SheetSelectionChange
Quando cambi foglio (partendo da Main), la macro Workbook_SheetSelectionChange ha il "Target" che fa riferimento al foglio Main, quindi la Intersect(Target, Worksheets(NOME).Range("A1:C2")) fallira' perche' Intersect deve lavorare su range dello stesso foglio (vedi https://docs.microsoft.com/it-it/office ... intersect)

Per uscirne, modifica sulla Workbook_SheetSelectionChange il check del nome foglio:
Codice: Seleziona tutto
    NOME = Target.Parent.Name  ' invece che ActiveSheet.Name


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

Re: Workbook Sheet Selection Change

Postdi miko » 29/11/21 15:09

Buon pomeriggio,
grazie per la spiegazione introduttiva, la soluzione proposta funziona.
in attesa del tuo contributo avevo continuato a fare prove e
nella seconda macro, Workbook_SheetSelectionChange, nella linea

If Not Intersect(Target, Worksheets(NOME).Range("A1:C2")) Is Nothing Then

ho sostituito Worksheets(NOME) con Sh, come e' riportato nel ByVal Sh As Object iniziale
e quindi scrivendo

If Not Intersect(Target, Sh.Range("A1:C2")) Is Nothing Then

il messaggio di errore non compare e tutto sembra funzionare, ma forse questa mia correzione non rispetta
i criteri da te evidenziati all'inizio ed è solo un caso fortuito.
ciao e grazie
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44

Re: Workbook Sheet Selection Change

Postdi Anthony47 » 29/11/21 19:31

Il tuo metodo elimina l'errore, ma concettualmente e' piu' corretto non eseguire quell'istruzione se l'evento non si riferisce al foglio Main.

Ha la precedenza pero' la massima "se funziona allora e' perfetto"

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


Torna a Applicazioni Office Windows


Topic correlati a "Workbook Sheet Selection Change":


Chi c’è in linea

Visitano il forum: Nessuno e 11 ospiti