2015-02-25 11 views
8

Ho un foglio di calcolo con molte righe di dati. Vorrei poter fare clic su una cella che eseguirà una macro utilizzando i dati di quella riga. Poiché il numero di righe cambierà sempre, penso che un collegamento ipertestuale per ogni riga potrebbe essere il modo migliore.In Excel, posso usare un collegamento ipertestuale per eseguire macro vba?

ROW MeterID Lat Long ReadX ReadY ReadZ CoeffA CoeffB CoeffC 
    2 10f62gs 34.1 33.3 102.2 231.3 382.2 4.34 22.1 0.002 
    3 83gs72g 34.4 31.4 109.2 213.1 372.1 2.23 12.7 0.023 
    4 43gS128 33.3 32.2 118.8 138.7 241.8 1.94 5.08 0.107 

C'è un modo per eseguire una macro VBA da cliccando su un collegamento ipertestuale e di essere in grado di conoscere la riga della cella che cliccato sul collegamento ipertestuale?

risposta

9

Questo funziona per voi

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) 
     MsgBox "Row " & ActiveCell.Row & " is clicked" 
End Sub 
5

Sì, è possibile, seguire la seguente procedura semplice per farlo:

Fase 1. Selezionare la cella in cui si desidera effettuare il collegamento ipertestuale Fase 2. Fare clic Righ -> Collegamento ... Punto 3. Immettere il Indirizzo della stessa cella in cui si sta creando il collegamento ipertestuale e nome del collegamento. Vedere la foto qui sotto:

Assegna macro a un collegamento ipertestuale

Fase 4. Fare clic su OK. Passo 5. HyperLink è stato creato.

Nota: facendo clic su questo collegamento ipertestuale, non verrà eseguito nulla perché è assegnato allo stesso indirizzo di cella.

Punto 6. Ora Premere Alt + F11 Punto 7. Copia incolla il codice qui sotto

Esegui macro di Excel facendo clic su un collegamento ipertestuale

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) 
    'Check if the Target Address is same as you have given 
    'In the above example i have taken A4 Cell, so I am 
    'Comparing this with $A$4 

    If Target.Range.Address = "$A$4" Then 
     'Write your all VBA Code, which you want to execute 
     'Or Call the function or Macro which you have 
     'written or recorded. 
     MsgBox "Write your Code here to be executed" 
     Exit Sub 
    End If 
End Sub 

nel codice qui sopra stiamo confrontando l'indirizzo di cella e quindi Esecuzione di un set di codice o funzione. C'è anche un altro modo per farlo. Possiamo confrontare con il nome di destinazione ed eseguire il codice. Nell'esempio sopra come ho dato il nome della destinazione collegamento ipertestuale come MyMacro.

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) 
    'Check if the Target Name is same as you have given 
    'In the above example i have given the Name of the HyperLink 
    'is MyMacro. 

    If Target.Name = "mymacro" Then 
     'Write your all VBA Code, which you want to execute 
     'Or Call the function or Macro which you have 
     'written or recorded. 
     MsgBox "Write your Code here to be executed" 
     Exit Sub 
    End If 
End Sub 
0

penso piuttosto che passare attraverso il fastidio di creare un collegamento ipertestuale per ogni cella, si sarebbe meglio creare una macro che fa riferimento la proprietà Activecell. Quindi, crea una scorciatoia da tastiera per la macro da eseguire. Per farlo:

  1. Premere ALT + F8
  2. Selezionare Options
  3. Scegli una chiave per essere la chiave

Se si dispone già di collegamenti ipertestuali, innescando una macro utilizzando l'evento Hyperlink_Follow può scorciatoia sii il migliore In caso contrario, quindi prendere in considerazione la mia raccomandazione.

Problemi correlati