|
Login
  • Page:
  • 1
  • 2

TOPIC: Help codice VBA

Help codice VBA 3 years 2 months ago #10691

  • espeppe
  • espeppe's Avatar
  • OFFLINE
  • Fresh Boarder
  • Posts: 9
  • Karma: 0
Buongiorno,
potreste aiutarmi su questo tema pls?
nel woorkbook di un file excel utilizzo il seguente codice

Application.OnKey "{F9}", "pippo"

per lanciare la macro pippo premendo il tasto F9.

Se apro contemporaneamente due file contenenti lo stesso codice e chiudendone successivamente uno dei due, premendo F9 mi si riapre quello chiuso. Come potrei evitare ciò?

Grazie anticipatamente
The administrator has disabled public write access.

Help codice VBA 3 years 2 months ago #10692

  • Marius44
  • Marius44's Avatar
  • OFFLINE
  • Gold Boarder
  • Posts: 185
  • Thank you received: 38
  • Karma: 14
Ciao Peppe

L'esatta sintassi del metodo è:

espressione.OnKey(Key, Procedure)

dove espressione è una variabile che rappresenta un oggetto Application che, per essere completa, può riferirsi ad un Workbook

Non ne sono certo al 100% ma ritengo che indicando il nome del file (che senza dubbio è diverso) risolvi il problema. Se un file si chiama "Pluto" e l'altro "ET" e tu hai aperto il file "Pluto" il richiamo della macro deve essere:
Application."Pluto".OnKey "{F9}", "pippo"
si riferisce SOLO ad un file e non all'altro.

Prova e fai sapere. Ciao,ùMario
The administrator has disabled public write access.

Help codice VBA 3 years 2 months ago #10693

  • espeppe
  • espeppe's Avatar
  • OFFLINE
  • Fresh Boarder
  • Posts: 9
  • Karma: 0
Grazie mille mario
purtroppo nn gira...mi da un errore di run time 438
Proprietà o metodo non supportati dall'oggetto
The administrator has disabled public write access.

Help codice VBA 3 years 2 months ago #10696

  • Marius44
  • Marius44's Avatar
  • OFFLINE
  • Gold Boarder
  • Posts: 185
  • Thank you received: 38
  • Karma: 14
Ciao Peppe
Forse ci siamo :) Dalle prove effettuate a me funziona.
Invece di inserire in Workbook_Open devi inserire la macro in WorkBook_Activate delle cartelle interessate ed i messaggi in un Modulo Standard, sempre in ogni cartella

In ThisWorkBook di Cartel1 (ovviamente i nomi sono da cambiare)
Private Sub Workbook_Activate()
        If ActiveWorkbook.Name = "Cartel1.xlsm" Then
            Application.OnKey "{F3}", "messaggio"
        End If
End Sub
In un Modulo Standard di Cartel1
Sub messaggio()
    If ActiveWorkbook.Name = "Cartel1.xlsm" Then
        MsgBox "Ciao"
    End If
End Sub
In ThisWorkBook di Cartel2
Private Sub Workbook_Activate()
    If ActiveWorkbook.Name = "Cartel2.xlsm" Then
        Application.OnKey "{F3}", "messaggio"
    End If
End Sub
In un Modulo Standard di Cartel2
Sub messaggio()
    If ActiveWorkbook.Name = "Cartel2.xlsm" Then
        MsgBox "Benvenuto"
    End If
End Sub

Prova e fai sapere. Ciao,
Mario
The administrator has disabled public write access.

Help codice VBA 3 years 2 months ago #10697

  • Marius44
  • Marius44's Avatar
  • OFFLINE
  • Gold Boarder
  • Posts: 185
  • Thank you received: 38
  • Karma: 14
Ciao Peppe
la notte porta "consiglio".
A rivedere il mio suggerimento nei Moduli Standard puoi togliere le righe If ... End if e lasciare solo il messaggio (o altro che tu decidessi debba fare la macro).

Ciao,
Mario
The administrator has disabled public write access.
The following user(s) said Thank You: espeppe

Help codice VBA 3 years 1 month ago #10713

  • espeppe
  • espeppe's Avatar
  • OFFLINE
  • Fresh Boarder
  • Posts: 9
  • Karma: 0
Grazie Mario,
sembra tutto risolto.
Ciao
Peppe
The administrator has disabled public write access.
  • Page:
  • 1
  • 2
Time to create page: 0.681 seconds