Pagina 1 di 2

Script VBA per introdurre hyperlink

MessaggioInviato: 4 mar 2018, 11:30
da boiler
Ciao a tutti

Sto cercando di fare qualcosa che excel non fa di suo e sono a buon punto.
Ora però dovrei inserire dinamicamente un link in una cella e non ci riesco.

Questo è il codice VBA ridotto all'osso (in realtà la funzione fa diverse altre cose e i campi sono dinamici, non hardcoded come qui):

Codice: Seleziona tutto
Public Function AddHyp()

Application.Volatile

Worksheets(1).Hyperlinks.Add _
    Anchor:=Worksheets(1).Range("V10"), _
    Address:="http://www.google.com", _
    SubAddress:="", _
    ScreenTip:="Google", _
    TextToDisplay:="Google"

End Function


Non succede nulla e nella cella in cui chiamo "=AddHyp()" appare l'errore #VALUE!.

Lavoro oggi per la prima volta con VBA, il mio codice è basato su esempi trovati online, quindi può benissimo essere che mi sfugga qualcosa di fondamentale.
Help :oops:

Grazie e saluti, Boiler

Re: Script VBA per introdurre hyperlink

MessaggioInviato: 4 mar 2018, 12:04
da boiler
Informazione aggiuntiva: se faccio partire lo script nel VBA-Editor con F5, il link appare correttamente nella cella V10 :shock:

Re: Script VBA per introdurre hyperlink

MessaggioInviato: 4 mar 2018, 18:15
da lelerelele
su che programma usi VBA?

in vecchie versioni di Excel il VBA era molto efficiente, nelle nuove versioni ho avuto problemi visto che sono state notevolmente ristrette le possibilità di agire entro le celle, specie per quanto riguarda l'evento che avvia la funzione VBA.

saluti.

Re: Script VBA per introdurre hyperlink

MessaggioInviato: 4 mar 2018, 18:35
da boiler
lelerelele ha scritto:su che programma usi VBA?

Excel (in Office Standard 2010)

Un'altra cosa interessante:
Codice: Seleziona tutto
Debug.Print (Worksheets(sheetName).Rows(Location.Row).Height)
Worksheets(sheetName).Rows(Location.Row).Height = 100


Commentando la seconda riga non ci sono errori e nel Log appare l'altezza della riga (15).
Togliendo il commento alla seconda riga ottengo di nuovo l'errore #VALUE!.

Ma stando alla VBA Reference, Height dovrebbe essere leggibile e scrivibile:
https://msdn.microsoft.com/en-us/vba/ex ... erty-excel

Non ci capisco piú niente...
Boiler

Re: Script VBA per introdurre hyperlink

MessaggioInviato: 4 mar 2018, 18:39
da lelerelele
come usi vba entro la cella?

non è che la scritta error compaia perché da vba non c'è nessun output nella cella?

Re: Script VBA per introdurre hyperlink

MessaggioInviato: 4 mar 2018, 18:51
da boiler
lelerelele ha scritto:come usi vba entro la cella?


Così:
problema_VBA.PNG
problema_VBA.PNG (6.16 KiB) Osservato 5176 volte


In U13 chiamo la funzione e mi aspetteri che appaia il link in V10 (a destra dell'uno). Invece il risultato è quello che vedi.

non è che la scritta error compaia perché da vba non c'è nessun output nella cella?


Ho aggiunto un valore di ritorno, ma non è cambiato nulla. Commentando la riga in cui aggiungo il link mi ritrovo lo zero in U13 come mi aspetterei.
Questo il code aggiornato (con il valore di ritorno):
Codice: Seleziona tutto
Public Function AddHyp()

Application.Volatile

Worksheets(1).Hyperlinks.Add _
    Anchor:=Worksheets(1).Range("V10"), _
    Address:="http://www.google.com", _
    SubAddress:="", _
    ScreenTip:="Google", _
    TextToDisplay:="Google"

AddHyp = 0

End Function

Re: Script VBA per introdurre hyperlink

MessaggioInviato: 4 mar 2018, 19:05
da lelerelele
in effetti non ho mai usato questo metodo, per quel poco ho usato questo per convertire la sequenza di numeri in data corretta con gli spazi :

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Static GiaFatto As Boolean

    Dim str As String
   
If GiaFatto = False Then
If Target.Cells.Count > 1 Then Exit Sub

str = Target.Cells.Formula

If (Len(str) < 5) Then Exit Sub

    If Target.Cells.Column = 7 Then

        If Len(str) < 6 Then
       
        str = Mid$(str, 1, 1) & "/" & Mid$(str, 2, 2) & "/" & Mid$(str, 4, 2)
       
        Else
        str = Mid$(str, 1, 2) & "/" & Mid$(str, 3, 2) & "/" & Mid$(str, 5, 2)
        End If
   
   GiaFatto = True
Target.Value = DateValue(str)
    End If

Re: Script VBA per introdurre hyperlink

MessaggioInviato: 5 mar 2018, 18:29
da boiler
Grazie per il sostegno, Foto Utentelelerelele
Nel frattempo ho scoperto due cose. Una è un'osservazione di carattere generale, l'altra potrebbe spiegare i malfunzionamenti. A te di scoprire cosa è cosa...

  • Quando aggiungo in una cella =AddHyp() viene in qualche modo linkato nella tabella il codice che in quel preciso momento descrive la funzione. Modifiche al codice VBA non influenzano il comportamento della funzione in quella cella fino al suo cancellamento e reinserimento.
  • Che linguaggio di merda.

Boiler

Re: Script VBA per introdurre hyperlink

MessaggioInviato: 5 mar 2018, 19:10
da fairyvilje
boiler ha scritto:Che linguaggio di merda.

È stato il mio primo linguaggio di programmazione. E lo ho sempre odiato :mrgreen: . Quindi non posso che sottoscrivere.

Re: Script VBA per introdurre hyperlink

MessaggioInviato: 5 mar 2018, 19:53
da soltec
Non so se può essere di aiuto ma io quando devo scrivere in vba se non conosco bene il codice faccio registra macro e poi modifico secondo esigenza.
Provare non nuoce.