Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Correzione macro

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Correzione macro

Postdi fastbike73 » 22/02/18 18:26

Buonasera a tutti e ben ritrovati. E' la terza volta che provo a scrivere questo topic ma ogni volta mi blocco
perchè non riesco a spiegare bene quello che mi occorre. Spero di riuscirci adesso. :D
In una cartella di lavoro ho 3 fogli. Nel foglio3 in C2 ho un Convalida Dati con un elenco da cui selezionare.
Effettuando la selezione riempio altre celle presenti nel foglio. Alcune tramite formula altre tramite il vba che allego di seguito.
Premetto che i dati per riempire le celle li prendo sia dal foglio2 che dal foglio1.

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim PID As Long, R As Long, j As Long, N As Integer
If Target.Address = "$C$2" Then
   ActiveSheet.Range("$A$10:$K$50").ClearContents

   PID = Cells(2, 7)
   R = ActiveWorkbook.Sheets("Foglio2").Cells(2, 3).End(xlDown).Row
   For j = 2 To R
    ' PID
    If ActiveWorkbook.Sheets("Foglio2").Cells(j, 3) = PID Then
      N = N + 1
      ' IDDetails
      ActiveSheet.Cells(9 + N, 1) = ActiveWorkbook.Sheets("Foglio2").Cells(j, 1)
      ' DataStipula
      ActiveSheet.Cells(9 + N, 2) = ActiveWorkbook.Sheets("Foglio2").Cells(j, 2)
      ' Rischio
      ActiveSheet.Cells(9 + N, 3) = ActiveWorkbook.Sheets("Foglio2").Cells(j, 4)
      ' Garanzia
      ActiveSheet.Cells(9 + N, 4) = ActiveWorkbook.Sheets("Foglio2").Cells(j, 5)
      ' Massimale
      ActiveSheet.Cells(9 + N, 5) = ActiveWorkbook.Sheets("Foglio2").Cells(j, 6)
      ' Scoperto
      ActiveSheet.Cells(9 + N, 6) = ActiveWorkbook.Sheets("Foglio2").Cells(j, 7)
      ' Franchigia
      ActiveSheet.Cells(9 + N, 7) = ActiveWorkbook.Sheets("Foglio2").Cells(j, 8)
      ' S.a.Massimo%
      ActiveSheet.Cells(9 + N, 8) = ActiveWorkbook.Sheets("Foglio2").Cells(j, 9)
      ' S.a.Massimo
      ActiveSheet.Cells(9 + N, 9) = ActiveWorkbook.Sheets("Foglio2").Cells(j, 10)
      ' Importo
      ActiveSheet.Cells(9 + N, 10) = ActiveWorkbook.Sheets("Foglio2").Cells(j, 11)

With ActiveSheet.Range(Cells(9 + N, 2), Cells(9 + N, 11))
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlCenter
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
       End With
       End If
    ActiveSheet.Range("$B$15:$B$50").NumberFormat = "m/d/yyyy"
   Next
End If
End sub


Allora in base al presente codice nel foglio3 a partire dalla riga 10 colonna 1 e per 11 colonne (salto la colonna 3 del foglio2) importo i dati presenti nel foglio2 . Nel foglio3 ho una 12esima colonna che vorrei contenesse una formula. Il problema sta nel fatto che, appena cambio la selezione nell'elenco a discesa del convalida dati, la formula che ho inserito nella colonna 12 (per intenderci da k10 fino a k50) stranamente viene cancellata.
Spero di essere stato abbastanza felice nella spiegazione ma eventulamente posso postare il file domani mattina.
Vi ringrazio anticipatamente per l'aiuto.

fastbike
fastbike73
Win 7 & Office 2013
Filemaker Pro v. 13
fastbike73
Utente Senior
 
Post: 247
Iscritto il: 23/04/14 10:54

Sponsor
 

Re: Correzione macro

Postdi Anthony47 » 22/02/18 23:35

La descrizione l'hai fatta abbastanza bene, peccato che non e' accompagnato da un file di prova in cui testare quello che la macro fa e quello che tu dici.

Per ora, senza file di prova, posso solo commentare che se le formule sono in K10:K50 di "foglio3", che e' anche quello che contiene la convalida e quello a cui si riferisce la Sub Worksheet_Change, allora e' solo normale che l'istruzione iniziale ActiveSheet.Range("$A$10:$K$50").ClearContents cancelli anche le formule. E' vero, in altra posizione scrivi che le formule sono in colonna 12 (che sarebbe la L), ma senza file di prova non si puo' capire dove e' lo sbaglio.

Se questo non ti accende la lucina allora prova ad allegare un file di test. Conferma anche che non ci sono ulteriori macro che possono andare in esecuzione.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17043
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Correzione macro

Postdi fastbike73 » 23/02/18 09:45

Anthony47 ha scritto:Per ora, senza file di prova, posso solo commentare che se le formule sono in K10:K50 di "foglio3", che e' anche quello che contiene la convalida e quello a cui si riferisce la Sub Worksheet_Change, allora e' solo normale che l'istruzione iniziale ActiveSheet.Range("$A$10:$K$50").ClearContents cancelli anche le formule.

Se questo non ti accende la lucina allora prova ad allegare un file di test. Conferma anche che non ci sono ulteriori macro che possono andare in esecuzione.

Ciao


Buongiorno Anthony, ti ringrazio perchè sei riuscito ad accendere la lucina. Hai risolto il problema evidenziadomi come il comando .ClearContents mi cancelli il contenuto delle celle fino alla colonna K (che è quella dove si trovano le formule).
In ogni caso ti posto il file così mi dici se c'è qualcosa da modificare ulteriormente.

https://www.dropbox.com/s/z4k7gdfvq8g5zg5/Dettaglio%20garanzie%20polizze_1.xlsm?dl=0
fastbike73
Win 7 & Office 2013
Filemaker Pro v. 13
fastbike73
Utente Senior
 
Post: 247
Iscritto il: 23/04/14 10:54

Re: Correzione macro

Postdi Anthony47 » 23/02/18 15:36

Solo tu puoi collaudare il comportamento della macro sulla base di quel che ti aspetti faccia.
E quando una macro fa quel che deve allora "e' perfetta così"

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17043
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Correzione macro":


Chi c’è in linea

Visitano il forum: Nessuno e 34 ospiti