Discussione:
Collegamenti ipertestuali (da codice VBA) o ...
(troppo vecchio per rispondere)
EnFo
2004-10-29 22:07:24 UTC
Permalink
Ciao a tutti, ho un problema da risolvere.
Veniamo al dunque:
Ho un file con un foglio "Modello" nascosto e un foglio "Indice". In
quest'ultimo foglio inserisco i nomi e qualche altro dato dei clienti
dopo aver cliccato su un tasto che mi inserisce una nuova riga dove è
presente un tasto con scritto "crea" ora cliccando su questo tasto la
macro mi crea un foglio con il nome del cliente copiandolo dal foglio
nascosto. Fin qui tutto ok.
Quello che non riesco a fare (è un mese che ci provo) è creare (in
automatico) un collegamento ipertestuale nella cella "nome cliente" che
mi indirizzi sul relativo foglio o (visto che forse non e possibile
creare il collegamento ipertestuale da VBA) in alternativa creare una
macro che faccia la stessa cosa, ovviamente cliccando su un tasto con
scritto "vai".
Spero di essermi spiegato.

Grazie a chi saprà e vorrà rispondermi.

Enrico
Per rispondermi abbassa "LA VOCE"
saoche
2004-10-30 09:12:59 UTC
Permalink
Nella news:wazgd.7923$***@twister2.libero.it del 30 ott 2004
*EnFo* ha scritto:

[...]
Post by EnFo
Quello che non riesco a fare (è un mese che ci provo) è creare (in
automatico) un collegamento ipertestuale nella cella "nome
cliente" che mi indirizzi sul relativo foglio o (visto che forse
non e possibile creare il collegamento ipertestuale da VBA) in
alternativa creare una macro che faccia la stessa cosa, ovviamente
cliccando su un tasto con scritto "vai".
[...]

ActiveSheet.Hyperlinks.Add Anchor:=Cells(1, 1), Address:="", _
SubAddress:= Cells(1, 1).Value & "!A1", _
TextToDisplay:=Cells(1, 1).Value

Anchor = cella in cui creare il collegamento ipertestuale
SubAddress = indirizzo del collegamento, per es. "Foglio1!A1"
TetToDisplay= testo da visualizzare

Cambia i riferimenti secondo le tue esigenze.
Ciao
--
...saoche[at]despammed[dot]com...
Tiziano Marmiroli
2004-10-30 09:30:35 UTC
Permalink
Post by EnFo
Ho un file con un foglio "Modello" nascosto e un foglio "Indice". In
quest'ultimo foglio inserisco i nomi e qualche altro dato dei clienti
dopo aver cliccato su un tasto che mi inserisce una nuova riga dove è
presente un tasto con scritto "crea" ora cliccando su questo tasto la
macro mi crea un foglio con il nome del cliente copiandolo dal foglio
nascosto. Fin qui tutto ok.
Quello che non riesco a fare (è un mese che ci provo) è creare (in
automatico) un collegamento ipertestuale nella cella "nome cliente" che
mi indirizzi sul relativo foglio o (visto che forse non e possibile
creare il collegamento ipertestuale da VBA) in alternativa creare una
macro che faccia la stessa cosa, ovviamente cliccando su un tasto con
scritto "vai".
Non mi è chiaro dove ti blocchi. Prova con qualcosa del genere:

'----------------------
Sub LinkFoglioCliente()
Dim c As Range
On Error Resume Next
For Each c In Selection
ActiveSheet.Hyperlinks.Add Anchor:=c, Address:="", _
SubAddress:=c.Value & "!A1", TextToDisplay:=c.Value
Next c
End Sub
'----------------------



In alternativa potresti sfruttare l'evento BeforeDoubleClick. Nel modulo
del foglio di lavoro "Indice" incollaci

'----------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("A2:A50")) Is Nothing Then
Worksheets(Target.Value).Activate
End If
End Sub
'----------------------

In questo caso facendo doppio click su una delle celle dell'intervallo
A2:A50 viene attivato il foglio corrispondente.

Facci sapere se e come hai risolto, grazie.
--
Tiziano Marmiroli
Microsoft MVP - Office
Enfo
2004-11-28 21:30:32 UTC
Permalink
Post by Tiziano Marmiroli
Post by EnFo
Ho un file con un foglio "Modello" nascosto e un foglio "Indice". In
quest'ultimo foglio inserisco i nomi e qualche altro dato dei clienti
dopo aver cliccato su un tasto che mi inserisce una nuova riga dove è
presente un tasto con scritto "crea" ora cliccando su questo tasto la
macro mi crea un foglio con il nome del cliente copiandolo dal foglio
nascosto. Fin qui tutto ok.
Quello che non riesco a fare (è un mese che ci provo) è creare (in
automatico) un collegamento ipertestuale nella cella "nome cliente" che
mi indirizzi sul relativo foglio o (visto che forse non e possibile
creare il collegamento ipertestuale da VBA) in alternativa creare una
macro che faccia la stessa cosa, ovviamente cliccando su un tasto con
scritto "vai".
'----------------------
Sub LinkFoglioCliente()
Dim c As Range
On Error Resume Next
For Each c In Selection
ActiveSheet.Hyperlinks.Add Anchor:=c, Address:="", _
SubAddress:=c.Value & "!A1", TextToDisplay:=c.Value
Next c
End Sub
'----------------------
In alternativa potresti sfruttare l'evento BeforeDoubleClick. Nel modulo
del foglio di lavoro "Indice" incollaci
'----------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("A2:A50")) Is Nothing Then
Worksheets(Target.Value).Activate
End If
End Sub
'----------------------
In questo caso facendo doppio click su una delle celle dell'intervallo
A2:A50 viene attivato il foglio corrispondente.
Facci sapere se e come hai risolto, grazie.
Scusatemi se rispondo solo ora, ma ho avuto alcuni problemini con il PC.
Ho utilizzato il primo codice che hai scritto, peraltro uguale a quello
di saoche. L'errore che avevo fatto era nel SubAddress in quanto io lo
ponevo uguale al nome del foglio e non invece ad variabile con valore
nome del foglio; in futuro dovrò stare più attento.
Per curiosità ho provato anche il secondo codice quello sull'evento
BeforeDoubleClick, ma credo di non essere riuscito ad ottenere nulla,
potresti gentilmente "tradurmi" il significato?

Grazie mille ad entrambi.


Enrico
Per rispondermi abbassa "LA VOCE"
Tiziano Marmiroli
2004-11-29 00:09:18 UTC
Permalink
Post by Enfo
Post by Tiziano Marmiroli
In alternativa potresti sfruttare l'evento BeforeDoubleClick. Nel modulo
del foglio di lavoro "Indice" incollaci
CUT
Post by Enfo
Post by Tiziano Marmiroli
In questo caso facendo doppio click su una delle celle dell'intervallo
A2:A50 viene attivato il foglio corrispondente.
Per curiosità ho provato anche il secondo codice quello sull'evento
BeforeDoubleClick, ma credo di non essere riuscito ad ottenere nulla,
potresti gentilmente "tradurmi" il significato?
Devi cliccare col destro sull'etichetta del foglio, scegliere Visualizza
codice e incollarlo lì.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("A2:A50")) Is Nothing Then
Worksheets(Target.Value).Activate
End If
End Sub

Tradotto:
se l'intersezione fra la cella su cui abbiamo fatto doppio click e
l'intervallo A2:A50 non è nulla (cioè se quella è una cella
dell'intervallo A2:A50) allora seleziona il foglio indicato nella cella
cliccata.
--
Tiziano Marmiroli
Microsoft MVP - Office
Enfo
2004-11-30 16:41:45 UTC
Permalink
Post by Tiziano Marmiroli
Post by Enfo
Per curiosità ho provato anche il secondo codice quello sull'evento
BeforeDoubleClick, ma credo di non essere riuscito ad ottenere nulla,
potresti gentilmente "tradurmi" il significato?
Devi cliccare col destro sull'etichetta del foglio, scegliere Visualizza
codice e incollarlo lì.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("A2:A50")) Is Nothing Then
Worksheets(Target.Value).Activate
End If
End Sub
se l'intersezione fra la cella su cui abbiamo fatto doppio click e
l'intervallo A2:A50 non è nulla (cioè se quella è una cella
dell'intervallo A2:A50) allora seleziona il foglio indicato nella cella
cliccata.
Grazie mille, ho provato e funziona alla grande anche se sfortunatamente
per il mio caso non va bene in quanto la macro, da quello che ho capito,
richiama il foglio numero "1", "2", "3", ecc. in ordine progressivo, e
nel mio file il numero progressivo non corrisponde al numero del foglio.
Mi hai cmq insegnato un'uteriore funzione di excel, grazie.
Per il mio caso ho risolto con la funzione che mi avevi già fornito con
il post precedente.

Grazie, ciao.


Enrico
Per rispondermi abbassa "LA VOCE"

Continua a leggere su narkive:
Loading...