Condividi tramite

elenco in discesa con collegamento ipertestuale

Anonimo
2024-11-21T20:55:48+00:00

Buongiorno a tutti e grazie fin da ora per chi potrà aiutarmi.

Ho un foglio di lavoro con diverse linguette.

Nella linguetta "dati" ho tutte le voci che compariranno nella linguetta "registro" con un elenco in discesa o un menù a tendina.

vorrei collegare tutte le voci presenti in "dati" con un collegamento ad un altro foglio di lavoro exell personalizzato per ogni singola voce. e fin qui nessun problema.

il problema sorge quando io vorrei andare sulla linguetta "registro" e quando seleziono il menù a tendina vorrei che poi quella voce selezionata mi portasse, cliccandoci sopra, al collegamento creato in "dati"

E' una cosa possibile o chiedo troppo a exel?

Grazie mille!

Microsoft 365 e Office | Excel | Per il lavoro | Altro

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

8 risposte

Ordina per: Più utili
  1. Anonimo
    2024-11-22T19:42:45+00:00

    Prova a vedere il tuo file di esempio: File esempio

    Premessa: ho trasformato in tabella anche l'intervallo delle voci delle entrate e uscite (intervallo con intestazione "eu") per poter intercettare il nome della tabella anche per quelle voci.

    In alcune voci ho inserito dei collegamenti a file vuoti creati appositamente. Quindi nel tuo PC avrai una segnalazione se clicchi sul collegamento ipertestuale.

    Ho sfruttato l'evento "doppio click" del foglio.

    Nel modulo VBA del foglio "Rapporto finanziario" ho inserito il seguente codice VBA:

    Option Explicit 
    
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
    
       Dim rngVoceSpesa As Range 
    
       Dim sNomeTabella As String 
    
       Dim oLoTabVoce As ListObject 
    
       Dim idxVoce As Variant 
    
       Dim rngVoce As Range 
    
       Dim sHiperLink As String 
    
       Set rngVoceSpesa = Me.ListObjects("TabellaPreventivo").ListColumns("VOCE SPESA").DataBodyRange 
    
       If Not Intersect(Target, rngVoceSpesa) Is Nothing Then 
    
          If Target.Value <> "" And Target.Offset(, -1).Value <> "" Then 
    
             Cancel = True 
    
             Select Case Target.Offset(, -1).Value 
    
                Case "Profitti" 
    
                   sNomeTabella = "VociReddito" 
    
                Case "Spese" 
    
                   sNomeTabella = "VociSpesa" 
    
                Case "EU" 
    
                   sNomeTabella = "TabellaEntrateUscite" 
    
             End Select 
    
             Set oLoTabVoce = ThisWorkbook.Worksheets("Dati elenco").ListObjects(sNomeTabella) 
    
             idxVoce = Application.Match(Target.Value, oLoTabVoce.ListColumns(1).DataBodyRange.Value, 0) 
    
             If Not IsError(idxVoce) Then 
    
                 Set rngVoce = oLoTabVoce.ListColumns(1).DataBodyRange(idxVoce) 
    
                 If rngVoce.Hyperlinks.Count > 0 Then 
    
                   sHiperLink = rngVoce.Hyperlinks(1).Address ' .Address 
    
                   On Error Resume Next 
    
                   rngVoce.Hyperlinks(1).Follow 
    
                   If Err.Number <> 0 Then 
    
                      MsgBox "Il file """ & sHiperLink & """ non è stato trovato!" & vbNewLine & _ 
    
                             "Verificare il collegamento della voce """ & rngVoce & """ nella tabella """ & oLoTabVoce.Name & """", vbCritical, "File non trovato" 
    
                   End If 
    
                 End If 
    
             End If 
    
          End If 
    
       End If 
    
    End Sub 
    

    La procedura verifica che venga eseguito il doppio click con il mouse in una delle celle dalla colonna "VOCE SPESA".

    Verifica che sia la cella dove si sia eseguito il doppio click, che quella alla sua sinistra, non siano vuote.

    Se sono soddisfatte tutte le precedenti condizioni legge il valore presente nella cella della colonna "TIPO VOCE" e in base al valore presente viene determinato in quale delle tabelle del foglio "Dati elenco" andare a cercare la voce.

    Effettua una ricerca (match) e se trova la voce verifica se vi sia presente un collegamento ipertestuale.

    Se è presente esegue il "Follow" del primo collegamento ipertestuale presente.

    Se il "Follow" dovesse fallire, perché magari il file del collegamento non viene trovato, viene lanciato un messaggio.

    In teoria, se l'inserimento nella colonna "TIPO VOCE" è sempre corretta, non si dovrebbero avere errori per il fatto che non viene trovata la "tabella" (oggetto ListObject). Sarebbe opportuno gestire anche questo eventuale possibile errore.

    Ma per il momento prova la procedura così come è per vedere se riesce a fare quanto da te desiderato.

    ciao

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2024-11-22T15:59:43+00:00

    Dovresti incollare il link del file condiviso tramite un qualche strumento "cloud" (es. On Drive, Drop Box o simili).

    ciao

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2024-11-22T15:02:53+00:00

    ciao, certamente e più che volentieri. sapresti dirmi come faccio per allegare il file?

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2024-11-22T06:57:09+00:00

    Potresti condividere il file per capire meglio la questione?

    Probabilmente sarebbe possibile utilizzare la funzione "COLLEG.IPERTESTUALE" sfruttando il valore inserito tramite convalida per raggiungere la posizione desiderata.

    Ma dalla descrizione che hai dato non sono riuscito a comprendere se il collegamento è da fare a fogli nella stessa cartella di lavoro o a cartelle di lavoro esterne.

    Con il file magari risulta più chiaro lo scenario.

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Eliminata

    Questa risposta è stata eliminata a causa di una violazione del codice di comportamento. La risposta è stata segnalata manualmente o identificata tramite il rilevamento automatizzato prima dell'esecuzione dell'azione. Per ulteriori informazioni, fai riferimento al codice di comportamento.


    I commenti sono stati disattivati. Ulteriori informazioni