› Sviluppare funzionalita su Microsoft Office con VBA › Aumentare valori di celle tramite selezione di celle collegate
- AutoreArticoli
Ciao è la prima volta che scrivo in questo forum.
Cerco una soluzione ad un problema. In Foglio1 dalla cella D4 ho un gruppo di celle fino a D70. Queste sono collegate ad altre celle, stessa quantità, in Foglio2 dalla cella C4. Vorrei aumentare per esempio di 1 il valore della cella C4 di Foglio2 selezionando la cella D5 di Foglio 1.
Con questo codice riesco a raggiungere il risultato:
If ActiveCell.Address = "D5" Then
Worksheets("Foglio2").Range("C4") = ActiveCell.Value + 1
ElseIf ActiveCell.Address = "D6" then ...
Però, questo codice va bene per poche celle; invece per un totale di 70 celle x 14 colonne direi di no. E' possibile secondo voi scrivere una Macro che svolga questa azione in modo ragionato che possa valere per tutte le celle della regione? Cioè la macro deve agire solo se la cella è selezionata e solo per la cella collegata.
GRAZIE in anticipo per chiunque vuole cimentarsi con questo problema.
Puoi usare questa mia macro, come base di partenza, da mettere nel modulo del Foglio1. Considerato che hai fornito pochissime e forse imprecise informazione su come vorresti venga realizzata l'attivazione, ti ho proposto due tipi di Evento. Pensando ad un refuso ti ho proposto anche due riferimenti di riga diversi ma se così non è, dove va effettuato l'incremento se seleziono la cella D4 ?
Option Explicit 'Private Sub Worksheet_Change(ByVal Target As Range) '<= alla variazione nella cella Private Sub Worksheet_SelectionChange(ByVal Target As Range) '<= alla semplice selezione della cella Dim ws2 As Worksheet Set ws2 = Worksheets("Foglio2") If Not Intersect(Target, Range("D4:D70")) Is Nothing Then ws2.Range("C" & Target.Row - 1) = ws2.Range("C" & Target.Row - 1).Value + 1 '<= riga precedente 'ws2.Range("C" & Target.Row) = ws2.Range("C" & Target.Row).Value + 1 '<=stessa riga End If End Sub
- AutoreArticoli