Aggiungi o sottrai Euro



  • Aggiungi o sottrai Euro
    di Danny data: 17/05/2016 17:25:35

    Cari amici di Excel

    Mi sarebbe molto utile poter avere una macro che mi permetta di aggiungere o sottrarre un valore in una cella.


    In breve che funzioni come una calcolatrice visualizzandomi sempre il risultato nella cella selezionata.
    Es: Se nella cella C10 ( dopo averla selezionata ) vorrei inserire 150 Euro, seleziono per es. il pulsante o cella nella colonna G ( contenete 50 ) + (L) e il pulsante o cella nella colonna H ( contenete 100 ) visualizzandomi il totale = 150 ( C10 ) e di conseguenza se vorrei sottrarre 20 dalla stessa cella riclicco sulla stessa ( C10) contenete 150 - (M) e il pulsante o cella nella colonna F ( contenete 20 ) visualizzandomi il totale = 120 (C10).

    Questo dovrebbe funzionare indipendentemente su tutte le celle C10 : C18

    PS: Non sapendo se il valore da inserire deve risultare sulla cella o su un pulsante li ho messi tutti e due.


    Ringrazio tutti quelli che possono essermi di aiuto
    un saluto
    Danny



  • di Mister_x (utente non iscritto) data: 17/05/2016 19:35:05

    ciao

    ti riallego il tuo file con le sub inserite

    PS devi scegliere il segno di utilizzo + o - e dopo attivare il valore
    funziona solamente sulle celle da B10 a B18 dato che nel tuo file hai indicato come riferimento queste celle

    ciao





  • di Danny data: 19/05/2016 15:12:29

    Ciao Mister_x,
    ti ringrazio veramente tantissimo per il tuo aiuto.
    Non vorrei approffitarne ma voglio chiederti gentilmente se sarebbe possibile fare 2 modifiche.
    Come primo mi servirebbe che funzionasse anche sulla colonna C ( C10:C18 ) e una cosa che mi sono accorto adesso ma che sarebbe molto utile, visto che dovrei lavorare con dei condizionali, se fosse eventualmente possibile dare direttamente l'imput al click sulle celle ( D3:J3 ) al posto dei pulsanti.

    ancora grazie 1000, saluti
    Danny

    Allego file



  • di Mister_x (utente non iscritto) data: 19/05/2016 17:12:16

    ciao

    per la prima richiesta e' semplicissima la cosa
    dove tu trovi nelle varie sub() inserite questa riga
    If Intersect(Range(Ncella), Range("B10:B18")) Is Nothing Then Exit Sub
    basta che modifichi il riferimento del Range() mettendo al posto di B la C
    If Intersect(Range(Ncella), Range("B10:C18")) Is Nothing Then Exit Sub

    per la seconda domanda NO, in quanto la sub() controlla la cella attiva, quindi se tu clicchi su un'altra cella questa di riferimento non sara' piu Compresa nel Range("B10:C18") quindi verra' ignorata
    PS sposta i bottoni sopra le celle ed e' come se fossero delle celle

    ciao





  • di Danny data: 20/05/2016 13:19:26

    CIAO Mister_x,
    ti ringrazio molto per la risposta il problema della seconda colonna l’ho risolto subito come da tue direttive.

    si certo ..il fatto di sostituire i pulsanti con le celle non era solo per visualizzarli nella sua forma ma mi sarebbe piaciuto poter renderli meno statici introducendo un effetto” rollover” che mi risaltasse il pulsante. Non sapendo se questo si può fare anche coi pulsanti ho provato a farlo con la formula vero / falso sulle celle ,pensando che sarei riuscito tramite la formattazione condizionale di rendere visibili le differenti “” banconote ”” solo dopo aver cliccato su una cella compresa tra la A/B 10 :18 in modo che riconosca che una di queste celle é attiva. Sapresti dirmi se ciò é possibile o qualcosa di simile direttamente coi pulsanti? … sarebbe fantastico!!!!!!!!! esiste al limite una formula in vba che da la possibilità di scoprire la riga 3 con i relativi pulsanti solo quando una delle celle A/B 10 :18 è attiva e di rinasconderla appena clicco su un’altra cella fuori da quel campo?

    ho provato a allegare il file con le celle doppie ma non so se si può risolvere il problema ….
    se quando hai un’attimo di tempo gli dai un ‘occhio te ne sarei veramente molto grato

    saluti ,grazie ancora

    Danny



  • di Mister_x (utente non iscritto) data: 20/05/2016 15:55:20

    ciao

    non ho scaricato il tuo file, ma ho lavorato sul mio,
    comunque le sub inserite nel foglio in questione fanno quello che tu hai chiesto
    attivano i pulsanti e li disattivano

    ti riallego il mio file

    ciao
     
    Sub Inserite attualmente
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Option Explicit
    Dim Segno As String
     Private Sub Worksheet_SelectionChange(ByVal target As Range)
      If Intersect(target, Range("B10:C18")) Is Nothing Then
      Call NascondePulsanti
      Rows("3:3").EntireRow.Hidden = True
       Else
      Rows("3:3").EntireRow.Hidden = False
      Call ScoprePulsanti
      End If
    End Sub
    
    Sub Somma()
    Segno = "+"
    Range("L5") = Segno
    Range("M5") = ""
    End Sub
    Sub Sottrae()
    Segno = "-"
    Range("L5") = ""
    Range("M5") = Segno
    End Sub
    
    Sub Cinque()
    Dim Ncella As String
    Ncella = ActiveCell.Address
    If Intersect(Range(Ncella), Range("B10:C18")) Is Nothing Then Exit Sub
    If Segno = "+" Then
    Range(Ncella) = Range(Ncella) + 5
    Else
    Range(Ncella) = Range(Ncella) - 5
    End If
    End Sub
    
    Sub Dieci()
    Dim Ncella As String
    Ncella = ActiveCell.Address
    If Intersect(Range(Ncella), Range("B10:C18")) Is Nothing Then Exit Sub
    If Segno = "+" Then
    Range(Ncella) = Range(Ncella) + 10
    Else
    Range(Ncella) = Range(Ncella) - 10
    End If
    End Sub
    
    Sub Venti()
    Dim Ncella As String
    Ncella = ActiveCell.Address
    If Intersect(Range(Ncella), Range("B10:C18")) Is Nothing Then Exit Sub
    If Segno = "+" Then
    Range(Ncella) = Range(Ncella) + 20
    Else
    Range(Ncella) = Range(Ncella) - 20
    End If
    End Sub
    
    Sub Cinquanta()
    Dim Ncella As String
    Ncella = ActiveCell.Address
    If Intersect(Range(Ncella), Range("B10:C18")) Is Nothing Then Exit Sub
    If Segno = "+" Then
    Range(Ncella) = Range(Ncella) + 50
    Else
    Range(Ncella) = Range(Ncella) - 50
    End If
    End Sub
    
    Sub Cento()
    Dim Ncella As String
    Ncella = ActiveCell.Address
    If Intersect(Range(Ncella), Range("B10:C18")) Is Nothing Then Exit Sub
    If Segno = "+" Then
    Range(Ncella) = Range(Ncella) + 100
    Else
    Range(Ncella) = Range(Ncella) - 100
    End If
    End Sub
    
    Sub Duecento()
    Dim Ncella As String
    Ncella = ActiveCell.Address
    If Intersect(Range(Ncella), Range("B10:C18")) Is Nothing Then Exit Sub
    If Segno = "+" Then
    Range(Ncella) = Range(Ncella) + 200
    Else
    Range(Ncella) = Range(Ncella) - 200
    End If
    End Sub
    
    Sub Cinquecento()
    Dim Ncella As String
    Ncella = ActiveCell.Address
    If Intersect(Range(Ncella), Range("B10:C18")) Is Nothing Then Exit Sub
    If Segno = "+" Then
    Range(Ncella) = Range(Ncella) + 500
    Else
    Range(Ncella) = Range(Ncella) - 500
    End If
    End Sub
    
    Sub NascondePulsanti()
    Dim NomPul As String
    Dim i As Long
    On Error Resume Next
    For i = 1 To 15
    NomPul = "Pulsante " & i
    Buttons(NomPul).Visible = False
    Next i
    End Sub
    
    Sub ScoprePulsanti()
    Dim NomPul As String
    Dim i As Long
    On Error Resume Next
    For i = 1 To 15
    NomPul = "Pulsante " & i
    Buttons(NomPul).Visible = True
    Next i
    End Sub
    






  • di Danny data: 21/05/2016 09:47:56

    CIAO Mister_x,
    Grazie per la veloce risposta e per il tuo lavoro
    il problema è che appena cerco di cliccare su qualsiasi cella il file mi si chiude inaspettatamente !!!
    ho però constatato che lo fa solo usando Mac perchè un mio amico ha provato con windows e da lui funziona .
    avresti un’ idea della possibile causa ?

    saluti
    Danny



  • di Mister_x (utente non iscritto) data: 23/05/2016 10:24:08

    ciao Danny

    purtroppo non ho a disposizione un Mac per capire il problema e cercare di risolverlo,
    speriamo che chi abbia questo possa fare a sua volta delle prove e capire se e' solamente sul tuo o e' un problema inerente ad excel per Mac
    comunque vedo se in giornata trovo un portatile dotato di Mac e faccio delle prove

    ciao





  • di Danny data: 23/05/2016 17:05:21

    CIAO Mister_x,

    ti ringrazio per la risposta e il tuo interesse.
    Ho potuto constatare che mi da lo stesso problema sia sul Laptop che sul fisso entambi utilizzando office 2011.

    Nella speranza di risolvere questo problema ti vorrei chiedere ancora un favore.
    Visto che quando chiude la riga dopo aver cliccato una cella esterna logicamente mi alza la grafica dell'altezza della riga chiusa. È possibile inserire nella formula una variante che quando la riga 3 viene nascosta, mi compensa l'altezza tolta aprendo la riga 2 e di conseguenza chiudendola quando mi apre la riga 3 ?

    Saluti Danny



  • di Mister_x (utente non iscritto) data: 23/05/2016 18:16:19

    ciao

    da come mi sembra tu hai dei Mac in quanto utilizzi la versino 2011 per mac

    per la tua richiesta la modifica alla prima parte delle sub()


    ciao
     
    Option Explicit
    Dim Segno As String
    Dim Altezza2 As Single
    Dim Altezza3 As Single
    Private Sub Worksheet_SelectionChange(ByVal target As Range)
     If Intersect(target, Range("B10:C18")) Is Nothing Then
       Altezza3 = Range("A3").RowHeight
       Call NascondePulsanti
       Altezza2 = Range("A2").RowHeight
       Range("A2").RowHeight = Altezza2 + Altezza3
       Rows("3:3").EntireRow.Hidden = True
       Else
      Rows("3:3").EntireRow.Hidden = False
      Call ScoprePulsanti
      Altezza2 = Range("A2").RowHeight
       Range("A2").RowHeight = Altezza2 - Altezza3
      End If
    End Sub
    






  • di Mister_x (utente non iscritto) data: 23/05/2016 18:41:51

    riciao

    messo un errore di valutazione nella modifica precedente
    inserito un calcolo non dovuto, nuova modifica

    riciao
     
    Option Explicit
    Dim Segno As String
    Dim Altezza2 As Single
    Dim Altezza3 As Single
    Private Sub Worksheet_SelectionChange(ByVal target As Range)
     If Intersect(target, Range("B10:C18")) Is Nothing Then
       Altezza3 = Range("A3").RowHeight
       Call NascondePulsanti
       Altezza2 = Range("A2").RowHeight
       Range("A2").RowHeight = Altezza2 + Altezza3
       Rows("3:3").EntireRow.Hidden = True
       Else
      Rows("3:3").EntireRow.Hidden = False
      Call ScoprePulsanti
         Range("A2").RowHeight = Altezza2
      End If
    End Sub






  • di Danny data: 24/05/2016 11:16:35

    Ciao,

    sí esatto uso excel 2011 con Mac. Ho sostituito la formula che hai aggiunto con quella precedente però funziona ugualmente solo su Windows. Ho notato che è prorio la prima parte che gestisce nascondi / scopri che crea problemi perchè per il resto funziona.

    Grazie, saluti
    Danny