[Excel 2003] Iniziare macro dalla cella in cui si trova il pulsante premuto

Anonimo
2013-01-05T16:56:49+00:00

Buongiorno a tutti.

Ho un elenco di siti e forum con Username e password.

PULSANTE   https://skydrive.live.com   ******@hotmail.it   password

PULSANTE   http://www.google.it/       username               password

Ho registrato una macro in Excel 2003 , con riferimenti relativi, che copia la cella con lo Username e poi avvia il sito web corrispondente (questo per avere il nome utente già pronto da incollare).

Poi ho pensato di inserire un pulsante, a sinistra di ogni riga, per avviare la macro che prenda i dati di quella riga. Purtroppo non riesco a far sì che la macro inizi l'esecuzione dalla cella corrispondente alla posizione del pulsante premuto; devo prima portare il cursore nella cella del pulsante, poi la macro funziona bene.

Ho fatto ricerche con "Active.cell" e "Range", ma non ho concluso niente. Avevo anche pensato ad usare il "rilascio" del pulsante, ma non so come fare...

La Macro è questa:

Sub FILL()

'

' FILL Macro

'

'

ActiveCell.Offset(0, 2).Range("A1").Select

Selection.Copy

ActiveCell.Offset(0, -1).Range("A1").Select

Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True

End Sub

Grazie a chi mi vorrà aiutare.

Ciao!

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2013-01-07T22:24:11+00:00

Ciao dnidny,

ho visto il tuo esempio e ho una buona notizia: ti puoi risparmiare i pulsanti. Visto che ciò che ti proponi sembra essere semplicemente copiare il contenuto della cella a destra di quella contenente il collegamento ipertestuale allora basterà intercettare:

  • Event FollowHyperlink(Target As Hyperlink)

    Membro di Excel.Worksheet

Così:

  1. Clic destro sul nome del Foglio di lavoro (nell'esempio è Foglio1)
  2. Visualizza codice
  3. Seleziona:

Worksheetnella casella Oggetto, quella in alto a sinistra dove si legge: (generale). 4. Seleziona:

FollowHyperlinknella casella Routine, quella in alto a destra dove probabilmente ora si legge: SelectionChange. 5. Ora il cursore è fra le righe della routine, così:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)|End Sub 6. Aggiungi l'istruzione:

Target.Range.Offset(, 1).Copyin modo da ottenere:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

    Target.Range.Offset(, 1).Copy

End Sub

Tutto qui, e i pulsanti non servono più. Fa' sapere se è quello che ti interessava ottenere.

La risposta è stata utile?

6 persone hanno trovato utile questa risposta.
0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2013-01-08T18:16:08+00:00

Ciao dnidny,

grazie del riscontro!

Una "Macro" è una "Routine", perché tutto il codice che scriviamo lo scriviamo in blocchi di istruzioni, di tipo "Sub" o "Function", dette appunto routine. Una macro è una routine, di tipo "Sub", un po' speciale in quanto

  • deve essere accessibile dall'interfaccia utente di Excel (cosa che invece non dovrebbe essere vera per tutte le altre routine di tipo "Sub") allo scopo per esempio di poterla associare a un Pulsante. .
  • non può prevedere parametri, o argomenti.
  • deve essere scritta in un "Modulo", detto anche "Modulo standard", del Progetto VBA.

Anche quella proposta (Worksheet_FollowHyperlink) è una routine, di tipo "Sub", un po' speciale in quanto viene eseguita a seguito dello scatenarsi di un "Evento". È detta appunto routine-evento e può essere scritta solo nel "Modulo di classe" di un oggetto. Nel nostro caso l'oggetto Worksheet.

La risposta è stata utile?

3 persone hanno trovato utile questa risposta.
0 commenti Nessun commento

7 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-01-05T21:05:56+00:00

    Ciao dnidny,

    bene, dunque stai usando proprio un "Pulsante". (Il "Pulsante di comando" è un oggetto ActiveX. Altra storia). Il codice che ti ho proposto funziona appunto con le forme "Pulsante" di tipo Modulo che stai usando.

    La risposta è stata utile?

    3 persone hanno trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2013-01-05T20:51:31+00:00

    Grazie per la risposta.

    Ho cliccato sulla Barra del menu > Visualizza barre degli strumenti > Moduli.

    Dalla barra Moduli ho cliccato sul rettangolo grigio "Pulsante" poi, con il cursore a forma di croce, ho disegnato il pulsante nella cella e ho assegnato la Macro. Quindi questo è un pulsante di comando?

    Pensavo, erroneamente, che il pulsante "attecchisse" alla cella...

    Ora provo la macro che mi hai consigliato.

    https://skydrive.live.com/redir?resid=AFBDE0079047B00D!4886&authkey=!APxtllcvX0xt8RU

    Ho allegato il file di Excel compresso :-)

    Grazie!

    La risposta è stata utile?

    3 persone hanno trovato utile questa risposta.
    0 commenti Nessun commento
  3. Anonimo
    2013-01-05T18:17:13+00:00

    Ciao dnidny,

    se i pulsanti sono di tipo "Pulsante", cioè non di tipo "Pulsante di comando", ovvero creati a partire dalla barra degli strumenti "Moduli", allora sperimenta questa macro, da associare a un paio di Pulsanti, per provarla:

    Public Sub Macro1()

    Dim wsh As Excel.Worksheet

    Dim obj As Excel.Shape

    Dim rng As Excel.Range

      Set wsh = Application.ActiveSheet

      Set obj = wsh.Shapes.Item(Application.Caller)

      Set rng = obj.TopLeftCell

      MsgBox rng.Address

      Set rng = Nothing

      Set obj = Nothing

      Set wsh = Nothing

    End Sub

    Altrimenti dicci che tipo di pulsanti usi.

    La risposta è stata utile?

    3 persone hanno trovato utile questa risposta.
    0 commenti Nessun commento