Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 9 su 9

Macro di aggiornamento tabella pivot non sempre funzionante

  1. #1
    Zannando non è in linea Novello
    Post
    24
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ciao a tutti,
    Ho uno strano problema a cui non so dare risposta, infatti come vedete al termine di queste "Private Sub" (legate nei primi due casi a semplici eventi "Click" e nell'ultimo caso "Terminate") ho inserito delle piccole macro che dovrebbero aggiornare una tabella pivot nel foglio Contatti, ma così avviene solo nel primo caso, mi sapreste dire cosa mi sfugge?
    Private Sub Fine_Click()
    Linea = ActiveCell.Row
    Cells(Linea, 5) = Indirizzo
    Cells(Linea, 6) = CodAGESCI
    Cells(Linea, 1) = StrConv(Cognomeplus, vbProperCase)
    Cells(Linea, 2) = StrConv(Nomeplus, vbProperCase)
    
    If Comune & " " & "(" & Provincia & ")" = " ()" Then
    Else
    Cells(Linea, 7) = Comune & " " & "(" & Provincia & ")"
    End If
    Cells(Linea, 8) = CAP
    Cells(Linea, 9) = Telefono1
    Cells(Linea, 10) = Telefono2
    Cells(Linea, 11) = Telefono3
    Cells(Linea, 12) = Mail1
    Cells(Linea, 13) = Mail2
    If Lupo_della = "Legge" Then
    Cells(Linea, 16) = "L.d.L."
    Else
    If Lupo_della = "Rupe" Then
    Cells(Linea, 16) = "L.d.R."
    Else
    If Lupo_della = "Anziano" Then
    Cells(Linea, 16) = "zL.A."
    Cells(Linea, 16).Activate
    With ActiveCell.Characters(Start:=1, Length:=0).Font
            .Name = "Calibri"
            .FontStyle = "Grassetto"
            .Size = 9
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .Color = -16777216
            .TintAndShade = 0
            .ThemeFont = xlThemeFontMinor
        End With
        With ActiveCell.Characters(Start:=1, Length:=1).Font
            .Name = "Calibri"
            .FontStyle = "Grassetto"
            .Size = 9
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .Color = -16727809
            .TintAndShade = 0
            .ThemeFont = xlThemeFontMinor
        End With
        With ActiveCell.Characters(Start:=2, Length:=4).Font
            .Name = "Calibri"
            .FontStyle = "Grassetto"
            .Size = 9
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .Color = -16777216
            .TintAndShade = 0
            .ThemeFont = xlThemeFontMinor
        End With
    Else
    Cells(Linea, 16) = Lupo_della
    End If
    End If
    End If
    
    Cells(Linea, 20) = N°specialità
    Cells(Linea, 39) = Anno_di_ingresso
    Cells(Linea, 14) = Sestiglia
    Cells(Linea, 15) = Ruolo_in_sestiglia
    Cells(Linea, 3) = Data_di_nascita
    Cells(Linea, 4) = Luogo_di_nascita
    Inserimento_dati.Hide
    
    If CheckBox1.Value = True Then
    Application.Run "Aggiornamento"
    End If
    
    'Sheets(Dati_completi).Cells(Linea, 1).Activate
    Sheets("Contatti").Activate
    Sheets("Contatti").PivotTables("Tabella_pivot5").PivotCache.Refresh
    Application.ScreenUpdating = True
    End Sub
    --------------------------------------------------------------------------------------------------
    Private Sub Annulla_Click()
    Inserimento_dati.Hide
    Sheets("Contatti").Activate
    Sheets("Contatti").PivotTables("Tabella_pivot5").PivotCache.Refresh
    Application.ScreenUpdating = True
    End Sub
    ----------------------------------------------------------------------------------------------
    Private Sub Inserimento_dati_Terminate()
    Sheets("Contatti").Activate
    Sheets("Contatti").PivotTables("Tabella_pivot5").PivotCache.Refresh
    Application.ScreenUpdating = True
    End Sub
    
    ℹ️ Leggi di più su Zannando ...

  2. #2
    L'avatar di dragone bianco
    dragone bianco non è in linea Amanuense
    Post
    7,756
    Like Inviati  
    0
    Like Ricevuti  
    3
    Ciao

    Le macro sono legate ad un pulsante o Cosa?
    i Pulsanti si trovano in un Foglio di Excels o in una Forms?

    Ciao
    ℹ️ Leggi di più su dragone bianco ...

  3. #3
    Zannando non è in linea Novello
    Post
    24
    Like Inviati  
    0
    Like Ricevuti  
    0
    I primi due sono entrambi click su pulsanti di una form (rispettivamente fine è annulla) mentre l'evento terminate è quello che viene indotto dal click sulla x in alto a destra del form è si riferisce alla chiusura del form stesso....
    ℹ️ Leggi di più su Zannando ...

  4. #4
    L'avatar di dragone bianco
    dragone bianco non è in linea Amanuense
    Post
    7,756
    Like Inviati  
    0
    Like Ricevuti  
    3
    Ciao

    Nella sub "Fine_Click" mancano i riferimenti Worksheets di tutti i CELLS (usando una form è meglio se lo specifichi)

    Nella sub "Annulla_Click" manca alla fine sub
    Unload Inserimento_dati
    
    Domanda:
    quando esegui il comando
    Application.ScreenUpdating = false
    
    vedo che alla fine dei cicli inserisci sempre
    Application.ScreenUpdating = True
    
    Ciao
    ℹ️ Leggi di più su dragone bianco ...

  5. #5
    Zannando non è in linea Novello
    Post
    24
    Like Inviati  
    0
    Like Ricevuti  
    0
    Si, il discorso dei worksheets mancanti mi rendo conto sia un rischio tenerli così ma è stata una scelta legata al fatto che questa struttura la uso in altri contesti e mi risultava comoda senza riferimenti richiamando il riferimento in macro precedenti ma probabilmente almeno all'inizio della sub non farebbe male averlo...

    Per lo sceenupdate invece il discorso è legato al fatto che prima di questa form ve ne sono altre due ed il false è richiamato all'apertura della prima Userform.

    Solo una domanda:
    Perchè mi consigli l'unload in Annulla e non in Fine?
    ℹ️ Leggi di più su Zannando ...

  6. #6
    L'avatar di dragone bianco
    dragone bianco non è in linea Amanuense
    Post
    7,756
    Like Inviati  
    0
    Like Ricevuti  
    3
    Ciao Zannando

    Quote Originariamente inviato da Zannando Visualizza il messaggio
    Solo una domanda:
    Perchè mi consigli l'unload in Annulla e non in Fine?
    Ho supposto che hai usato HIDE per "chiudere" la form, non sapendo che quel comando nasconde la maschera e basta

    Per i worksheets ti consiglio di aggiungere questa riga di comando
    Dim Foglio_Corrente as Worksheets
    
    Set Foglio_Corrente=Activeworksheet
    
    e ogni volta che usi un range scrivi
     Foglio_Corrente.range("A1")
     Foglio_Corrente.cells(1,5)
    
    Così facendo memorizzi il foglio attivo all'inizio della funzione e tutte le operazioni vengono fatte su quel foglio anche se durante il codice per "cari motivi" potrebbe cambiare il foglio attivo

    Per il fatto che il codice sembra non funzionare, da quello che ho letto, sembra tutto OK
    a parte quelle 2 cose che ti ho già scritto

    Ciao
    ℹ️ Leggi di più su dragone bianco ...

  7. #7
    Zannando non è in linea Novello
    Post
    24
    Like Inviati  
    0
    Like Ricevuti  
    0
    Grazie per le dritte, anche se per qualche motivo mi dava un errore nell'assegnazione dell'oggetto utilizzando le righe di comando che mi hai suggerito...e alla fine dato che il comando di fine era l'unico a funzionare a dovere l'ho fatto tornare come in origine, ma tenterò di ristudiarmi la faccenda...
    ℹ️ Leggi di più su Zannando ...

  8. #8
    L'avatar di dragone bianco
    dragone bianco non è in linea Amanuense
    Post
    7,756
    Like Inviati  
    0
    Like Ricevuti  
    3
    c'è stato un imperdonabile errore nel codice da me scritto (un po' di fretta)
    Qui sotto riporto il codice corretto
    Dim Foglio_Corrente As Worksheet
    
    Set Foglio_Corrente = ActiveSheet
    
    ActiveSheet restituisce lo Sheet attivo

    ma la base dell'idea rimane la stessa
    all'inizio del codice Determini il foglio attivo e lo metti in una variabile
    Durante l'esecuzione del codice anche se il foglio attivo cambia, la tua variabile farà si che operi sempre sullo stesso foglio senza influenze di modifiche successive (dovute al codice o ad altro)

    Ciao e Buon lavoro
    ℹ️ Leggi di più su dragone bianco ...

  9. #9
    Zannando non è in linea Novello
    Post
    24
    Like Inviati  
    0
    Like Ricevuti  
    0
    Avevo intuito l'errore e avevo già provato la versione corretta ;-)
    grazie ancora
    ℹ️ Leggi di più su Zannando ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. scroll mouse non più funzionante dopo aggiornamento
    Da verterbel nel forum Microsoft Access
    Risposte: 1
    Ultimo Post: 26-08-2017, 19:18
  2. libreoffice aggiornamento tabelle pivot non funzionante
    Da claudioxe nel forum LibreOffice, OpenOffice e altro
    Risposte: 0
    Ultimo Post: 01-05-2015, 09:42
  3. Risposte: 1
    Ultimo Post: 10-01-2014, 21:07
  4. Risposte: 0
    Ultimo Post: 10-01-2014, 18:33
  5. Risposte: 6
    Ultimo Post: 11-01-2011, 20:54