Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

vba2003:lanciare routine al modificarsi di una cella

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

vba2003:lanciare routine al modificarsi di una cella

Postdi karug64 » 17/03/12 11:24

Salve a tutti.
In un precedente post mi avevte consigliato questo codice per intercattare la modifica di una cella all'interno di un range e lanciare una sub vba:
Codice: Seleziona tutto
    Private Sub Worksheet_Change(ByVal Target As Range)
    UR = Range("D" & Rows.Count).End(xlUp).Row
    Area = "D2:G" & UR
    If Not Application.Intersect(Target, Range(Area)) Is Nothing Then
        Call TrovaComb
        End If
    End Sub


Ma volendo usare lo stesso metodo per delle celle separate e disposte su piu' fogli (per esempio: devo lanciare la rourtine Ctrl_data_da() quando modifico la cella D4 del foglio("Inse"), la rourtine Ctrl_data_a() quando modifico la cella D5 del foglio("Inse"), e la rourtine Ctrl_elenco() quando modifico la cella C5 del foglio("Riepilogo") come si fa (se si puo' fare....) ?
grazie
Office 2010
karug64
Utente Senior
 
Post: 580
Iscritto il: 20/11/11 21:22

Sponsor
 

Re: vba2003:lanciare routine al modificarsi di una cella

Postdi Anthony47 » 17/03/12 15:58

Suggeriso di usare l' evento Workbook_SheetChange, con una macro di questo tipo
Codice: Seleziona tutto
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
Select Case Target.Address
    Case "$D$4"
    If ActiveSheet.Name = "Foglio1" Then Call macro1
    Case "$D$5"
    If ActiveSheet.Name = "Foglio2" Then Call macro2
    '...
    '. altri "case" simili
    '...
End Select
Application.EnableEvents = True
End Sub
Va inserita all' interno del modulo vba "ThisWorkbook"; vanno eliminati le macro di Worksheet_Change che hai messo nei vari moduli di foglio (teoricamente i due tipi di evento potrebbero convivere, l' importante e' che gli eventi gestiti da uno non confliggano con quelli gestiti dall' altra).

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: vba2003:lanciare routine al modificarsi di una cella

Postdi karug64 » 18/03/12 01:02

Anthony47 ha scritto:Suggeriso di usare l' evento Workbook_SheetChange, con una macro di questo tipo
Codice: Seleziona tutto
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
Select Case Target.Address
    Case "$D$4"
    If ActiveSheet.Name = "Foglio1" Then Call macro1
    Case "$D$5"
    If ActiveSheet.Name = "Foglio2" Then Call macro2
    '...
    '. altri "case" simili
    '...
End Select
Application.EnableEvents = True
End Sub
Va inserita all' interno del modulo vba "ThisWorkbook"; vanno eliminati le macro di Worksheet_Change che hai messo nei vari moduli di foglio (teoricamente i due tipi di evento potrebbero convivere, l' importante e' che gli eventi gestiti da uno non confliggano con quelli gestiti dall' altra).

Ciao


Grazie
Office 2010
karug64
Utente Senior
 
Post: 580
Iscritto il: 20/11/11 21:22


Torna a Applicazioni Office Windows


Topic correlati a "vba2003:lanciare routine al modificarsi di una cella":


Chi c’è in linea

Visitano il forum: Nessuno e 15 ospiti