Macro VBA per aggio...
 
Notifiche
Cancella tutti

La consultazione del forum è libera per tutti.

Per poter porre un quesito è invece necessario essere un utente registrato (clicca qui se non lo sei).

Tutti gli utenti che richiedono un supporto, come da REGOLAMENTO, sono caldamente invitati ad allegare un file di esempio con l'indicazione di quello che si desidera ottenere.

[Risolto] Macro VBA per aggiornare listino Excel

22 Post
3 Utenti
0 Reactions
576 Visualizzazioni
gianfranco55
(@gianfranco55)
Post: 1797
Moderatore
 

ciao Marius

sono certo che si possa lanciare

usando IF NOT INTERSECT............

ma bisogna sapere quale colonna viene scritta a mano

o cambia attraverso una macro

 
Postato : 19/06/2023 15:00
Forum 1
(@guidob)
Post: 0
New Member
Avviatore di Topic
 

@marius44 Si, effettivamente  C è scritto a mano e D è frutto di una formula

 
Postato : 19/06/2023 18:49
gianfranco55
(@gianfranco55)
Post: 1797
Moderatore
 

ciao

due possibilità

la prima tieni nel modulo la macro

e sul foglio metti

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [C:C]) Is Nothing Then
    Call Calcola
End If

End Sub

così come scrivi il dato in C la macro si attiva

questa invece messa sul foglio (elimina la macro sul modulo)

Private Sub Worksheet_Change(ByVal Target As Range)

   Dim RP As Long, i As Long
Dim mCPU As Double, mSSD As Double, mALI As Double
Dim mHD As Double, mCS As Double '<<<<<< aggiungere
mCPU = 20
mSSD = 30
mALI = 35
mHD = 10    '<<<<<<<< da modificare ammontare
mCS = 5     '<<<<<<<< da modificare ammontare
If Not Intersect(Target, [C:C]) Is Nothing Then
On Error GoTo chiudi
 Application.EnableEvents = False
  If Target.Offset(0, 5) <> "" Then
    If UCase(Target.Offset(0, 5)) = "CPU" Then
        Target.Offset(0, 1) = Target * (1.22 * (1 + (mCPU / 100)))
    ElseIf UCase(Target.Offset(0, 5)) = "SSD" Then
        Target.Offset(0, 1) = Target * (1 + (mSSD / 100))
    ElseIf UCase(Target.Offset(0, 5)) = "ALIMENTATORI" Then
        Target.Offset(0, 1) = Target * (1 + (mALI / 100))
    ElseIf UCase(Target.Offset(0, 5)) = "CASE" Then
      Target.Offset(0, 1) = Target * (1 + (mCS / 100))
    ElseIf UCase(Target.Offset(0, 5)) = "HARD DISK" Then
      Target.Offset(0, 1) = Target * (1 + (mHD / 100))
       Application.EnableEvents = True
    End If
  End If

End If
chiudi:
 Application.EnableEvents = True
End Sub

si attiva riga per riga........non le ricalcola tutte

 
Postato : 19/06/2023 21:03
Forum 1
(@guidob)
Post: 0
New Member
Avviatore di Topic
 

@gianfranco55 OK, proverò e ti faccio sapere

 

 
Postato : 19/06/2023 21:58
Forum 1
(@guidob)
Post: 0
New Member
Avviatore di Topic
 

Ho provato la prima soluzione e funziona

 
Postato : 19/06/2023 22:51
gianfranco55
(@gianfranco55)
Post: 1797
Moderatore
 

ciao

non è il funzionamento che mi interessava ma il modo

di lavorare delle due macro

la prima passa tutte le righe ogni volta

la seconda invece calcola solo sulla riga dove scrivi

risparmiando ricalcoli ad excel

 

 
Postato : 20/06/2023 08:34
Forum 1
(@guidob)
Post: 0
New Member
Avviatore di Topic
 

@gianfranco55 Si, hai ragione, ma nel mio caso ricevo il listino dal mio fornitore con la colonna C già presente.

Ho provato pertanto solamente il funzionamento.

 
Postato : 20/06/2023 10:50
Pagina 2 / 2
Condividi:
My Agile Privacy
Questo sito utilizza cookie tecnici e di profilazione. Cliccando su accetta si autorizzano tutti i cookie di profilazione. Cliccando su rifiuta o la X si rifiutano tutti i cookie di profilazione. Cliccando su personalizza è possibile selezionare quali cookie di profilazione attivare.
Attenzione: alcune funzionalità di questa pagina potrebbero essere bloccate a seguito delle tue scelte privacy
     Scarica il nostro ebook gratuito     

Unisciti a oltre 35.000 professionisti
che hanno già scelto di semplificare il proprio lavoro
e aumentare la produttività con la nostra newsletter!

Scarica l’ebook con i
migliori trucchi e suggerimenti per Excel
selezionati per te da Excel Academy

Download