Reset di una macro



  • Reset di una macro
    di Nic82 data: 24/03/2011

    Ciao a tutti, stavolta ho un problemino un po' complicato, almeno per me...

    ho un db sull'export di alcune città italiane. devo creare una sub che mi vada ad abbassare il valore dell'export per alcune città in modo dinamanico, cioè l'untente tramite un classico inputbox potrà inserire la percentuale di abbassamento del dato.
    esempio, se vorrà abbassare il dato di parma inserira al primo inputbox "parma", mentre al secondo "0,3" per abbassarlo del 30%.
    fin qui ci sono (spero ).
    i problemi sono 2:
    1) una volta che l'utente compie una modifica, esso non può tornare indietro e lavorare sul dato originale relativo a parma. vorrei una sub che mi resetti la prima modifica, a cui l'utente può ricorrere per annullare l'effetto dell'abbassamento del 30% e tornare ad effettuare un nuovo abbassamento sul dato originaler di parma, tipo del 50%, senza dovere tutte le volte chiudere la cartella di lavoro ed uscire senza salvare.
    2)alla fine del db ho una cella con il totale complessivo del valore dell'export per le città italiane. qui c'è una semplice funzione "somma" che si modifica ogni volta che i dati del db vengono cambiati. mi serve una sub che tipo mi produca una specie di report di quello che sono state le scelte dell'utente e di come cambia il dato totale,
    esempio:
    città scelta: parma
    valore scelto: 30%
    nuovo totale: xxx

    se l'utente vede che il totale è troppo alto o troppo basso, potra tornare a lavorare sui dati originali con la sub di reset.

    cioè quello che deve poter fare la sub di reset è congelare i dati originali e riportarli in vita ogni volta che viene lanciata!

    qualcuno può aiutarmi?! grazie!!!



  • di Mik (utente non iscritto) data: 24/03/2011

    Ciao, te lo chiedo non si sà mai...
    devi perforza crearti una macro? se annulli l'ultima modifica dal menù predefinito di excel che problemi ci sono?



  • di Nic82 data: 24/03/2011

    Cia mik,

    putroppo quando lanci una macro non si attiva il comando annulla...non so perchè. però la funzione che dovrebbe avere la mia macro è proprio analogo a quello del comando annulla, cioè dovrebbe annullare l'azione compiuta da una macro, come se fosse una normale azione compituta sul foglio di lavoro tramite e i comandi tradizionali!



  • di Mrt (utente non iscritto) data: 24/03/2011

    Ho allegato un file che potrebbe fare al caso tuo
    saluti



  • di Nic82 data: 24/03/2011

    Grazie 1000 mrt!

    il problema comunque rimane, vi metto in allegato l'esempio del db su cui sto lavorando!

    in pratica, una volta trovata la città inserita dall'utente con l'inputbox, esempio "ancona",
    la sub mi va a prendere un range con offset+resize e fino a qui tutto ok.
    devo diminuire i valori contenuti in ogni cella della riga selezionata del 30%, come cavolo faccio??


    aiutooo
     
    Sub DecurtaCittà()
    
    
    Dim cella As Range
    
    Set CellaPartenza = ActiveCell.Offset(0, 0)
    
    MsgBox "NB: la decurtazione viene fatta su tutte le categorie"
    Mess1 = "Scegli la provincia: "
    Mess3 = "Scegli la % da decurtare: "
    
        Provincia = InputBox(Mess1)
       
        Percentuale = InputBox(Mess3)
      
    For Each cella In Worksheets("Dati origine").Range(CellaPartenza, CellaPartenza.End(xlDown))
    
    If cella.Value = Provincia Then CellaPartenza.Offset(0, 6).Resize(1, 13).Select
    'fino a qui tutto ok
    For Each c In Selection
    c.Value = c.Value * Percentuale
    'qui non funziona, non mi prende la percetuale, anche se al posto di inputbox inserisco una costate, tipo C.Value = C.value*0.5
    Next
    Next
    
    End Sub



  • di Mrt (utente non iscritto) data: 24/03/2011

    Allego file db3 , potrebbe , adattato al tuo caso, andare bene.

    saluti



  • di Nic82 data: 25/03/2011

    Grazie mrt,

    così funziona! intanto che ci sono approfitto ancora della tua disponibilità!

    un'ultima cosa: guardando il db "esempio export" che ho caricato, vedi che nella colonna a c'è una serie di record per "ancona".

    come faccio per avere una sub che mi conta il numero di celle nel range selezionato che hanno il valore "ancona"??? grazie 1000



  • di Nic82 data: 25/03/2011

    Scusa, la sub...
     
    Sub SelezionaCittà()
    Dim Cella As Range, Città As String
    Città = InputBox("Dammi la città")
    With Worksheets("Dati origine").Range([A4], [A4].End(xlDown)).Select
    For Each C In Selection
    If C.Value = Città Then C.Count
    Next
    MsgBox Nr
    End With
    
    End Sub



  • di Mrt (utente non iscritto) data: 25/03/2011

    Eccco il codice, gurda se funge
     
    Sub SelezionaCittà()
    Dim Città As String, Contatore As Integer, numrighe As Integer, Rng
    Città = InputBox("Dammi la città")
    Contatore = 0
    
    Worksheets("Dati Origine").Activate
    If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData
    
    numrighe = Cells(Rows.Count, 4).End(xlUp).Row
    Set Rng = ActiveSheet.Range("D2", "D" & numrighe)
    
    For Each C In Rng
    If C.Value = Città Then
    Contatore = Contatore + 1
    End If
    
    Next
    MsgBox "N.ro" & " " & Contatore & " " & Città
    
    End Sub