Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione di dati
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