È soltanto un Pokémon con le armi o è un qualcosa di più? Vieni a parlarne su Award & Oscar!
 
Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Collegamento ipertestuale

Ultimo Aggiornamento: 11/02/2017 19:08
Post: 26
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
31/01/2017 18:31

Collegamento ipertestuale
Ciao Ragazzi,
Sto lavorando a un progetto e ho bisogno di voi.
Ho una serie di celle in cui mi serve che qualora queste siano vuote, non si faccia niente.
Se però contengono una "x" tale x deve essere un collegamento ipertestuale.
Ho provato con =Se(cella="";"";collegament.ipertes("C:etc";)).
Però dice che c'è un problema do riferimento cella, insomma tale formula vale se è inerente ad una cella diversa da quella in cui scrivo la formula.
È possibile trovare una soluzione? Grazie
Post: 26
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
31/01/2017 22:47

Nessuno sa come potrei risolvere?
Grazie in anticipo
Post: 2.700
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
OFFLINE
31/01/2017 22:56

Ciao

Confesso di non aver capito molto.

Puoi allegare un file di esempio spiegando meglio?

Alfredo
Post: 27
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
31/01/2017 23:07

Si, ammetto di essermi espresso male.
Domani posterò il file da pc, comunque, in breve mi serve che in una cella sia presente un collegamento ipertestuale solo se questa contiene un certo valore ( nel mio caso la "X")
Post: 28
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
01/02/2017 21:00

Ho predisposto un file di esempio. Nella cella E4 ho inserito la formula che vorrei utilizzare, però, mi da errore di riferimento cella.

Le allego il link da cui poter scaricare il file.
https://www.dropbox.com/s/ccabvse9icxw2mx/esempio.xlsx?dl=0

grazie per l'aiuto
Post: 29
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
03/02/2017 16:15

Proprio nessuno sa come posso risolvere?
Post: 476
Registrato il: 02/08/2015
Utente Senior
Excel 2013
OFFLINE
03/02/2017 19:56

Ciao a tutti,

@gionox
come prima cosa... NON puoi controllare se la cella E4 è vuota mettendo la formula nella stessa cella E4 (riferimento circolare), dopo è normale che se cancelli il contenuto della cella cancellerai anche la formula!

Quindi ti consiglio di passare al VBA.
Nel modulo di classe del foglio "Foglio1" puoi usare il seguente codice:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Indirizzo As String

If Not Intersect(Target, Range("E4:N4")) Is Nothing Then
    If UCase(Target.Value) = "X" Then
        Indirizzo = "http://www.mondofilm.it/wp-content/uploads/2017/01/Oscar2017.jpg"
        Target.Hyperlinks.Add Anchor:=Target, Address:=Indirizzo, ScreenTip:="Oscar 2017"
    End If
End If
End Sub


Come indirizzo ho messo una foto degli Oscar 2017, tu cambialo a tuo piacimento.

Ti riallego il file...
[Modificato da cromagno 03/02/2017 20:00]


"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
Post: 30
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
04/02/2017 20:03

Ciao, grazie dell'aiuto.
il tuo file in realtà non sono riuscito ad aprirlo, però ho copiato il codice e funziona benissimo!
C'è un modo per farlo valere per tutti i fogli presenti nel file o lo incollo in ogni foglio?
Post: 479
Registrato il: 02/08/2015
Utente Senior
Excel 2013
OFFLINE
04/02/2017 20:10

Re:
gionox, 04/02/2017 20.03:

Ciao, grazie dell'aiuto.
il tuo file in realtà non sono riuscito ad aprirlo, però ho copiato il codice e funziona benissimo!
C'è un modo per farlo valere per tutti i fogli presenti nel file o lo incollo in ogni foglio?



Ciao,
per farlo valare per tutti i fogli (naturalmente il range di azione deve essere lo stesso... intendo le celle in cui metti la "X"), il corpo del codice lo devi mettere nel modulo di classe di "Questa cartella di lavoro" invece che nel modulo di classe del Foglio, ed al posto di associarlo all'evento "Worksheet_Change" lo assocerai all'evento "Workbook_SheetChange"....

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Indirizzo As String
 
If Not Intersect(Target, Range("E4:N4")) Is Nothing Then
    If UCase(Target.Value) = "X" Then
        Indirizzo = "http://www.mondofilm.it/wp-content/uploads/2017/01/Oscar2017.jpg"
        Target.Hyperlinks.Add Anchor:=Target, Address:=Indirizzo, ScreenTip:="Oscar 2017"
    End If
End If
End Sub


non posso provare al momento ma dovrebbe funzionare...


"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
Post: 31
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
04/02/2017 20:15

perfetto, funziona! graziee
Post: 319
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
06/02/2017 09:54

Una piccola aggiunta all'ottimo lavoro di cromagno (ciao Tore).
Il seguente codice "simula" il clic sinistro del mouse sulla cella dove è stata inserita la X (cambia anche la X con la stringa relativa).

In un Modulo Standard
Option Explicit

Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Public Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Public Const MOUSEEVENTF_LEFTDOWN = &H2
Public Const MOUSEEVENTF_LEFTUP = &H4

Public Type POINTAPI
    x As Long
    y As Long
End Type

Sub SimulClic()
Dim Pos As POINTAPI
    GetCursorPos Pos
    'Mi dice la posizione del puntatore.
    'MsgBox "Distanza Sinistra: " & Pos.x & "   " & "Distanza dal Bordo superiore: " & Pos.y
    mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
    mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End Sub


Nel Modulo di Classe del Foglio interessato (o dei Fogli)
Option Explicit
 
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Indirizzo As String
Dim Pos As POINTAPI
If Not Intersect(Target, Range("E4:N4")) Is Nothing Then
    If UCase(Target.Value) = "X" Then
        Indirizzo = "http://www.mondofilm.it/wp-content/uploads/2017/01/Oscar2017.jpg"
        Target.Hyperlinks.Add Anchor:=Target, Address:=Indirizzo, ScreenTip:="Oscar 2017", TextToDisplay:="Oscar 2017"
        SimulClic
    End If
End If
End Sub


Prova e fai sapere. Ciao,
Mario
Post: 489
Registrato il: 02/08/2015
Utente Senior
Excel 2013
OFFLINE
06/02/2017 10:08

Ciao Mario,
vedo che ti sei sbizzarrito [SM=x423028]

Mi permetto solo una piccola modifica per le Private Function/Sub (l'ho notato perchè uso la versione 64 bit)...

#If VBA7 Then
    Public Declare PtrSafe Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
    Public Declare PtrSafe Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
#Else
    Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
    Public Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
#End If


Ciao e complimenti [SM=g27811]
io non sono tanto pratico di API...


"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
Post: 320
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
06/02/2017 10:30

@cromagno

Ciao Tore
neanch'io sono molto pratico di API ma queste erano abbastanza facili.

Ottima la correzione.
Ciao,
Mario
Post: 34
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
06/02/2017 11:47

Ciao ringrazio entrambi.
Sottolineo che il primo lavoro svolto da Cromagno adempie perfettamente alla richiesta.
Volendo utilizzare il lavoro di Marius non ho ben capito dove incollare il codice....In cartella di lavoro e sul singolo foglio?
Grazie
Post: 35
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
06/02/2017 14:56

Ho provato ad incollare il codice nel foglio prova che ho allegato, ma sicuro sbaglio perchè escono continui errori..
Grazie
Post: 321
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
06/02/2017 14:58

Ciao
come ti ho scritto immediatamente prima di ogni codice il primo va su un Modulo Standard (al Foglio Excel ==> Alt + F11 ==> Inserisci ==> Modulo) ed il secondo nello stesso Foglio dove hai messo quello di cromagno (ma, ovviamente, devi togliere quello di prima).

Apporta le correzioni suggerite da cromagno.

Ciao,
Mario
Post: 36
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
06/02/2017 15:07

Ciao, ho seguito i tuoi passaggi (e ho apportato le modifiche suggerite da Cromagno), però nel momento in cui digito la "x" mi esce: "variabile non definita".
Post: 322
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
06/02/2017 15:14

Ciao
In quale punto del codice si blocca?

Ciao,
Mario
Post: 323
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
06/02/2017 15:19

Ciao
Provo ad allegarti il file sul quale ho lavorato io.

Ciao,
Mario
Post: 37
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
11/02/2017 19:01

Ciao, premetto che ho optato per la soluzione di Cromagno, in quanto risponde meglio alle mie esigenze.
Però sono sorti due problemi:
1) se taglio un intervallo di celle in cui ho inserito le "x" e le incollo in un altra zona, appare l'errore: "Errore run time '13'. Tipo non corrispondente (Fine o Debug) [se l'operazione la copia per una singola cella, il problema non sussiste)

2) inoltre, siccome adesso mi interessa che ogni mese, le x presenti in un intervallo vengano spostate in un altro e il primo intervallo resti vuoti. Ho pensato di utilizzare un macro per questo, però, se faccio Taglia e Incolla, vengono tagliati anche i bordi della tabella però io voglio che rimangano. Come posso procede per evitare ciò?


Grazie
Post: 38
Registrato il: 12/04/2013
Città: BARI
Età: 34
Utente Junior
2016
OFFLINE
11/02/2017 19:08


Questo è il codice presente nel modulo "Questa cartella di lavoro"

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Indirizzo As String

If Not Intersect(Target, Range("B5:AW71")) Is Nothing Then
If UCase(Target.Value) = "X" Then
Indirizzo = "E:\tirocinio\Rapportini\Rapportini_2017.xlsx"
Target.Hyperlinks.Add Anchor:=Target, Address:=Indirizzo, ScreenTip:="Rapportini 2017"
End If
End If
End Sub
[Modificato da gionox 12/02/2017 11:28]
Vota: 15MediaObject5,00121 1
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 18:09. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com