Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Attivare macro con riferimenti relativi dopo cambio 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

Attivare macro con riferimenti relativi dopo cambio cella

Postdi casastella » 12/03/14 17:22

Buongiorno a tutti!
Ho una macro che si avvia automaticamente non appena esco da una cella determinata.
Non riesco a far partire i riferimenti della macro dalla cella corretta, vale a dire quella modificata prima di premere “invio” o il tasto “freccia”.

Ho cominciato creando una macro con riferimenti relativi che potrebbe essere ad esempio:

Sub Macrotest()
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "a"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "b"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "c"
End Sub

La macro originale ovviamente è più complessa. In poche parole fa questo:
A dipendenza del valore o scritta che inserisco ad esempio nella cella B2 mi inserisce dei valori in altre celle posizionate sotto la cella di partenza (es. B3, B4 e B5). Questa macro attivata manualmente funziona.

Vorrei rendere automatico questo processo ogni volta che modifico dei specifici gruppi di celle del foglio che potrebbero essere ad esempio:

Range("B2:F2")
Range("B5:F5")

Quindi ho fatto questo:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("B2:F2")
Set KeyCells = Range("B5:F5")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
Run ("Macrotest")
End If
End Sub

A questo punto è sorto il problema, ossia che non mi vengono cambiati i valori in base alla cella selezionata ma in base a quella successiva. In altre parole se cambio il valore in B2 e per “confermare” il valore mi sposto in C2, la macro viene eseguita basandosi sulla cella C2 e mi ridà i valori in C3, C4 e C5. Se mi sposto in B1 la macro si attiva basandosi su B1 e mi vengono ridati i valori nelle celle B2, B3 e B4. Lo stesso vale ovviamente anche per A2 e B3.
Detto questo avrei bisogno che quando modifico il valore di B2 e mi sposto in un'altra cella qualsiasi la macro che si attiva automaticamente prenda come riferimento B2 e non la nuova cella selezionata. Visto che lo devo fare per più celle non credo si possano togliere i riferimenti relativi della macro.
Qualche idea?
casastella
Newbie
 
Post: 3
Iscritto il: 12/03/14 16:24

Sponsor
 

Re: Attivare macro con riferimenti relativi dopo cambio cell

Postdi Anthony47 » 13/03/14 02:14

Ciao casastella, benvenuto nel forum.
Mi era sfuggito il quesito... che comunque non mi e' chiaro.
Infatti nella Worksheet_Change il parametro "Target" identifica chiaramente la/le cella/e modificate, indipendentemente che la modifica sia stata completata con Enter, una freccia, un click del mouse in altra cella.
Quindi ti bastera' usare"Target" piu' Offset per puntare alle celle da modificare; es
Codice: Seleziona tutto
Target.Offset(1,0).FormulaR1C1 = "a"
Target.Offset(2,0).FormulaR1C1 = "b"

Quale e' la cosa che non ti torna?

Qualche aommento sul codice
Set KeyCells = Range("B2:F2")
Set KeyCells = Range("B5:F5")

Il secondo "Set" rimuove il primo.

Range(Target.Address)
Questa e' equivalente a scrivere solo "Target"

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: Attivare macro con riferimenti relativi dopo cambio cell

Postdi casastella » 13/03/14 09:41

Ciao Anthony47 grazie della risposta sono riuscito ad applicare la tua soluzione al mio codice. Grazie anche per gli accorgimenti. Infatti prima non avevo ancora controllato se i range funzionassero scritti in quel modo. Come posso fare per selezionarne di più?
casastella
Newbie
 
Post: 3
Iscritto il: 12/03/14 16:24

Re: Attivare macro con riferimenti relativi dopo cambio cell

Postdi casastella » 13/03/14 10:56

Grazie mille dell'aiuto ho trovato la risposta all'ultimo quesito, che era piuttosto semplice.

Set KeyCells = Range("B2:F2,B5:F5")

Buona giornata
casastella
Newbie
 
Post: 3
Iscritto il: 12/03/14 16:24


Torna a Applicazioni Office Windows


Topic correlati a "Attivare macro con riferimenti relativi dopo cambio cella":


Chi c’è in linea

Visitano il forum: Nessuno e 20 ospiti