Discussione:
Aumentare e Diminuire valori di una cella attraverso la selezione di una cella collegata.
(troppo vecchio per rispondere)
RE.MOTO
2020-11-07 11:12:44 UTC
Permalink
Buona giornata a tutti*
Pongo un domanda che riguarda l'aumento di valori data in due fogli Excel.
- Foglio 1, seleziono cella A1 contenente un valore (data) collegato;
- Foglio 2, cella A1 contiene la data a cui A1 di FOGLIO è collegato.

E' possibile creare una funzione VBA incrementale (ed una decrementale) che una volta eseguita diminuisca o aumenti un certo valore (nel mio caso una data) solo se in FOGLIO 1 venga selezionata la cella interessata collegata ad altra cella in FOGLIO 2 contenente il valore vero da modificare?

L'esecuzione delle due macro avverrebbe associando a due pulsanti "+" e "-" rispettivamente la macro per aumentare e la macro per diminuire. Ho due esempi funzionanti ma non sono sufficienti:

PRIMA COPPIA DI ESEMPIO

Sub Aumenta_Data()
ActiveCell.Value = ActiveCell.Value + 1
End Sub

Sub Diminuisci_Data()
ActiveCell.Value = ActiveCell.Value - 1
End Sub


SECONDA COPPIA DI ESEMPIO
Sub Aumenta_Data()
Dim intCella As Integer
intCella = Range("a1").Value
Range("a1").FormulaR1C1 = intCella + 1
End Sub

Sub Diminuisci_Data()
Dim intCella As Integer
intCella = Range("A1").Value
'Range("A1").FormulaR1C1 = intCella - 1
End Sub

Le due coppie di esempio contengono solo in parte la potenzialità che mi interessano.

Spero che l'argomento interessi qualcuno. Grazie a chiunque per l'attenzione.
RE.MOTO
2020-11-08 17:51:53 UTC
Permalink
Un aggiornamento sulla possibile soluzione. Studiando, cercando, leggendo e sperimentando ho escogitato questa soluzione. Mi piacerebbe, se qualcuno trova interesse, leggere dei commenti o delle soluzioni alternative:

Sub Diminuisci()
If ActiveCell.Address = "$A$15" Then
Worksheets("Foglio2").Range("A2").Value = ActiveCell.Value - 1
ElseIf ActiveCell.Address = "$B$15" Then
Worksheets("Foglio2").Range("B2").Value = ActiveCell.Value - 1
ElseIf ActiveCell.Address = "$C$15" Then
Worksheets("Foglio2").Range("C2").Value = ActiveCell.Value - 1
ElseIf ActiveCell.Address = "$D$15" Then
Worksheets("Foglio2").Range("D2").Value = ActiveCell.Value - 1
End If
End Sub

Sub Diminuisci()
If ActiveCell.Address = "$A$15" Then
Worksheets("Foglio2").Range("A2").Value = ActiveCell.Value - 1
ElseIf ActiveCell.Address = "$B$15" Then
Worksheets("Foglio2").Range("B2").Value = ActiveCell.Value - 1
ElseIf ActiveCell.Address = "$C$15" Then
Worksheets("Foglio2").Range("C2").Value = ActiveCell.Value - 1
ElseIf ActiveCell.Address = "$D$15" Then
Worksheets("Foglio2").Range("D2").Value = ActiveCell.Value - 1
End If
End Sub

In Foglio2 le celle A2,B2,C2,D2 contengono delle date scritte.
In Foglio1 le celle A15,B15,C15,D15 sono collegate alle 4 celle di Foglio1.

Selezionando una delle 4 celle sul Foglio1 e utilizzando in macro ActiveCell.Value +1 e ActiveCell.Value -1 ottengo l'aumento o la diminuzione dei valori delle celle del Foglio2 il cui contenuto si riflette nelle celle di Foglio1. Il collegamento non viene cancellato cioè resta intatto tra le celle dei 2 fogli. Ovviamente le due macro Sub Aumenta() e Sub Diminuisci() sono state assegnate a due pulsanti "+" e "-". I due pulsanti funzionano solo se le celle interessate vengono selezionate.
Può andar bene così?
RE.MOTO
2020-11-08 19:13:24 UTC
Permalink
Un aggiornamento sulla possibile soluzione. Studiando, cercando, leggendo e sperimentando ho escogitato questa soluzione. Mi piacerebbe, se qualcuno trova interesse, leggere dei commenti o delle soluzioni alternative:

Sub Aumenta()
If ActiveCell.Address = "$A$15" Then
Worksheets("Foglio2").Range("A2").Value = ActiveCell.Value+1
ElseIf ActiveCell.Address = "$B$15" Then
Worksheets("Foglio2").Range("B2").Value = ActiveCell.Value+1
ElseIf ActiveCell.Address = "$C$15" Then
Worksheets("Foglio2").Range("C2").Value = ActiveCell.Value+1
ElseIf ActiveCell.Address = "$D$15" Then
Worksheets("Foglio2").Range("D2").Value = ActiveCell.Value+1
End If
End Sub

Sub Diminuisci()
If ActiveCell.Address = "$A$15" Then
Worksheets("Foglio2").Range("A2").Value = ActiveCell.Value - 1
ElseIf ActiveCell.Address = "$B$15" Then
Worksheets("Foglio2").Range("B2").Value = ActiveCell.Value - 1
ElseIf ActiveCell.Address = "$C$15" Then
Worksheets("Foglio2").Range("C2").Value = ActiveCell.Value - 1
ElseIf ActiveCell.Address = "$D$15" Then
Worksheets("Foglio2").Range("D2").Value = ActiveCell.Value - 1
End If
End Sub

In Foglio2 le celle A2,B2,C2,D2 contengono delle date scritte.
In Foglio1 le celle A15,B15,C15,D15 sono collegate alle 4 celle di Foglio1.

Selezionando una delle 4 celle sul Foglio1 e utilizzando in macro ActiveCell.Value +1 e ActiveCell.Value -1 ottengo l'aumento o la diminuzione dei valori delle celle del Foglio2 il cui contenuto si riflette nelle celle di Foglio1. Il collegamento non viene cancellato cioè resta intatto tra le celle dei 2 fogli. Ovviamente le due macro Sub Aumenta() e Sub Diminuisci() sono state assegnate a due pulsanti "+" e "-". I due pulsanti funzionano solo se le celle interessate vengono selezionate.
Può andar bene così? Grazie.

Loading...