Risultati da 1 a 26 di 26

Discussione: L'indice dei fogli di lavoro, come aggiornarlo senza perdere i dati



  1. #1
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    L'indice dei fogli di lavoro, come aggiornarlo senza perdere i dati

    Buonasera !
    Vi allego il seguente codice VBA, che serve per creare l'indice dei fogli di lavoro su Excel.
    Il codice funziona bene, non solo la prima volta che creo l'indice, ma anche nei successivi aggiornamenti per l'aggiunta di altri fogli.
    Per motivo di spazio nell'etichetta del nome del foglio, preferisco mantenere il nome Foglio1, Foglio2 ecc ecc.
    Nella pagina dell'indice, i nomi dei fogli li ho in colonna A a partire da A1 e a fianco di Foglio1, Foglio2, inserisco il vero nome in colonna B partendo da B1.
    Mi è capitato di dover aggiornare l'indice. Ho cliccato sul pulsante collegato al codice VBA, mi ha aggiornato l'indice, ma mi ha cancellato il contenuto della colonna B.
    Vi chiedo, come posso modificare il codice VBA, per mantenere il contenuto della colonna B quando aggiorno l'indice ?

    Codice: 
    Public Sub CreaIndice()
    Dim foglio As Worksheet
    Dim intRisposta As Integer
    
    
        For Each foglio In Worksheets
            If UCase(foglio.Name) = "INDICE" Then
                intRisposta = MsgBox("Esiste già un foglio chiamato Indice." & vbCrLf & " Vuoi aggiornare l'indice Esistente?", _
                vbYesNoCancel, "Attenzione!")
                Select Case intRisposta
                Case vbYes
                    Application.DisplayAlerts = False
                    Worksheets(foglio.Name).Delete
                    Application.DisplayAlerts = True
                    Indice
                Case vbNo
                    Exit Sub
                Case vbCancel
                    Exit Sub
                End Select
                Exit Sub
            End If
        Next
        Indice
    End Sub

  2. #2
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    41
    Messaggi
    2074
    Versione Office
    office pro 2010
    Likes ricevuti
    440
    Likes dati
    241

    Re: L'indice dei fogli di lavoro, come aggiornarlo senza perdere i dati

    MAnca la parte importante del listato. Quella che crea effettivamente l' indice

  3. #3
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    Re: L'indice dei fogli di lavoro, come aggiornarlo senza perdere i dati

    Citazione Originariamente Scritto da dracoscrigno Visualizza Messaggio
    MAnca la parte importante del listato. Quella che crea effettivamente l' indice
    Buongiorno !

    Riporto i due codici VBA per la creazione dell'indice:

    Codice: 
    Public Sub Indice()
    Dim foglio As Worksheet
    Dim y As Integer
      y = 1
      Worksheets.Add Before:=Worksheets(1)
      ActiveSheet.Name = "Indice"
      For Each foglio In Worksheets
        If Not foglio.Name = "Indice" Then
          Range("A" & y).Select
          ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="'" & foglio.Name & "'" & "!A1", _TextToDisplay:=foglio.Name
          y = y + 1
        End If
      Next
          Range("A1").CurrentRegion.Sort key1:=Range("A1"), order1:=xlAscending, Header:=xlNo
          Columns(1).AutoFit
    End Sub
    
    
    
    
    Public Sub CreaIndice()
    Dim foglio As Worksheet
    Dim intRisposta As Integer
    
    
        For Each foglio In Worksheets
            If UCase(foglio.Name) = "INDICE" Then
                intRisposta = MsgBox("Esiste già un foglio chiamato Indice." & vbCrLf & " Vuoi aggiornare l'indice Esistente?", _
                vbYesNoCancel, "Attenzione!")
                Select Case intRisposta
                Case vbYes
                    Application.DisplayAlerts = False
                    Worksheets(foglio.Name).Delete
                    Application.DisplayAlerts = True
                    Indice
                Case vbNo
                    Exit Sub
                Case vbCancel
                    Exit Sub
                End Select
                Exit Sub
            End If
        Next
        Indice
    End Sub

  4. #4

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2810
    Versione Office
    Excel 2013
    Likes ricevuti
    1022
    Likes dati
    979

    Re: L'indice dei fogli di lavoro, come aggiornarlo senza perdere i dati

    Sicuramente manca parte del codice in quanto con quello pubblicato la colonna B è vuota e non c'è nessun comando che cancella tale colonna.
    Se vuoi essere aiutato, allega un file senza dati sensibili

  5. #5
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    Re: L'indice dei fogli di lavoro, come aggiornarlo senza perdere i dati

    Citazione Originariamente Scritto da Rubik72 Visualizza Messaggio
    Sicuramente manca parte del codice in quanto con quello pubblicato la colonna B è vuota e non c'è nessun comando che cancella tale colonna.
    Se vuoi essere aiutato, allega un file senza dati sensibili
    Il punto è: mi serve il Vostro aiuto per modificare il codice VBA per fare in modo che quando aggiorno l'indice, ciò che scrivo nella colonna B non venga cancellato.
    Il fatto è che ogni volta che premo il pulsante che attiva la macro, il VBA mi crea un "nuovo" indice !!!

  6. #6

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2810
    Versione Office
    Excel 2013
    Likes ricevuti
    1022
    Likes dati
    979

    Re: L'indice dei fogli di lavoro, come aggiornarlo senza perdere i dati

    Citazione Originariamente Scritto da ProgrammD69 Visualizza Messaggio
    Il punto è: mi serve il Vostro aiuto per modificare il codice VBA per fare in modo che quando aggiorno l'indice, ciò che scrivo nella colonna B non venga cancellato.[...]
    Il codice così come l'ha postato, FUNZIONA, sicuramente ci sarà altro codice (che non hai postato) che cancella il contenuto della colonna "B"


    Citazione Originariamente Scritto da ProgrammD69 Visualizza Messaggio
    [...]Il fatto è che ogni volta che premo il pulsante che attiva la macro, il VBA mi crea un "nuovo" indice !!![...]
    quale indice? la routine postata non crea nessun indice!

  7. #7
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    Re: L'indice dei fogli di lavoro, come aggiornarlo senza perdere i dati

    Citazione Originariamente Scritto da Rubik72 Visualizza Messaggio
    Il codice così come l'ha postato, FUNZIONA, sicuramente ci sarà altro codice (che non hai postato) che cancella il contenuto della colonna "B"



    quale indice? la routine postata non crea nessun indice!
    Di seguito inserisco tutto il VBA che mi crea un indice nei fogli di lavoro. Non c'è nessun codice che cancella il contenuto della colonna B. Semplicemente il codice genera ad ogni clic sul pulsante Crea Indice, un nuovo Indice. Io vorrei che cliccando la seconda volta e successive sul pulsante Crea Indice, i nomi della colonna B non vengano cancellati.

    Codice: 
    Public Sub cmdCreaIndice_Click()
        Modulo1.CreaIndice
    End Sub
    
     
    Public Sub Indice()
    Dim foglio As Worksheet
    Dim y As Integer
    y = 1
       
        Worksheets.Add Before:=Worksheets(1)
        ActiveSheet.Name = "Indice"
       
        For Each foglio In Worksheets
            If Not foglio.Name = "Indice" Then
                Range("A" & y).Select
                ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="'" & foglio.Name & "'" & "!A1", _
                TextToDisplay:=foglio.Name
                y = y + 1
            End If
        Next
       
        Range("A1").CurrentRegion.Sort key1:=Range("A1"), order1:=xlAscending, Header:=xlNo
        Columns(1).AutoFit
               
    End Sub
    
     
    Public Sub CreaIndice()
    Dim foglio As Worksheet
    Dim intRisposta As Integer
     
        For Each foglio In Worksheets
            If UCase(foglio.Name) = "INDICE" Then
                intRisposta = MsgBox("Esiste già un foglio chiamato Indice." & vbCrLf & " Vuoi aggiornare l'indice Esistente?", _
                vbYesNoCancel, "Attenzione!")
                Select Case intRisposta
                Case vbYes
                    Application.DisplayAlerts = False
                    Worksheets(foglio.Name).Delete
                    Application.DisplayAlerts = True
                    Indice
                Case vbNo
                    Exit Sub
                Case vbCancel
                    Exit Sub
                End Select
                Exit Sub
            End If
        Next
        Indice
    End Sub

  8. #8
    L'avatar di tanimon
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    _
    Messaggi
    258
    Versione Office
    Excel 2007
    Likes ricevuti
    36
    Likes dati
    4

    Re: L'indice dei fogli di lavoro, come aggiornarlo senza perdere i dati

    Citazione Originariamente Scritto da ProgrammD69 Visualizza Messaggio
    Mi è capitato di dover aggiornare l'indice. Ho cliccato sul pulsante collegato al codice VBA, mi ha aggiornato l'indice, ma mi ha cancellato il contenuto della colonna B.
    Vi chiedo, come posso modificare il codice VBA, per mantenere il contenuto della colonna B quando aggiorno l'indice ?
    ciao
    secondo me, non è ti cancella la colonna B.

    Non viene copiata/riprodotta sul NUOVO foglio indice

    Fai una prova eliminando tutti i fogli, lasciandone 1 solo ed inserendo dei dati in colonna B e vedi che succede.

    Ciao
    Frank
    Excel 2007 win7 - Ogni Progetto è composto da Micro Progetti: PRIMA risolvi quelli, e PRIMA raggiungi il completamento del Progetto!
    Domanda: "Come avranno fatto gli utilizzatori di Excel VBA, quando non esisteva il registratore di macro?"

  9. #9
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    Re: L'indice dei fogli di lavoro, come aggiornarlo senza perdere i dati

    Citazione Originariamente Scritto da tanimon Visualizza Messaggio
    ciao
    secondo me, non è ti cancella la colonna B.

    Non viene copiata/riprodotta sul NUOVO foglio indice

    Fai una prova eliminando tutti i fogli, lasciandone 1 solo ed inserendo dei dati in colonna B e vedi che succede.

    Ciao
    Frank

    Ho provato ma non funziona.

    Citazione Originariamente Scritto da tanimon Visualizza Messaggio
    Non viene copiata/riprodotta sul NUOVO foglio indice
    E' proprio quello che vorrei, cioè ad un nuovo indice, il contenuto della colonna B viene ricopiato nel nuovo indice.
    Che aggiunta di VBA devo fare ?

  10. #10
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    41
    Messaggi
    2074
    Versione Office
    office pro 2010
    Likes ricevuti
    440
    Likes dati
    241

    Re: L'indice dei fogli di lavoro, come aggiornarlo senza perdere i dati

    l indice lo generi in modo automatico.
    ed autonaticamente, dopo esser stato cancellato, esso si rigenera secondo quanto prestabilito.

    nel foglio rigenerato non posson esser presenti dati applicati manualmente.

    piuttosto trova il modo di generare automaticamente anche quello che ora immetti in modo manuale.

    per esempio, avendo il titolo del foglio nello stesso luogo di ogni foglio.
    in questo modo potrai aggiungere, alla creazione automatica, anche quello che ora inmetti manualmente.

  11. #11
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    Re: L'indice dei fogli di lavoro, come aggiornarlo senza perdere i dati

    Citazione Originariamente Scritto da dracoscrigno Visualizza Messaggio
    l indice lo generi in modo automatico.
    ed autonaticamente, dopo esser stato cancellato, esso si rigenera secondo quanto prestabilito.

    nel foglio rigenerato non posson esser presenti dati applicati manualmente.

    piuttosto trova il modo di generare automaticamente anche quello che ora immetti in modo manuale.

    per esempio, avendo il titolo del foglio nello stesso luogo di ogni foglio.
    in questo modo potrai aggiungere, alla creazione automatica, anche quello che ora inmetti manualmente.
    Cioè se in A1 metto il nome del foglio, poi alla rigenerazione dell'indice, in colonna B, mi ritrovo che il foglio1 si chiama Tizio, il foglio2 Caio ecc ecc.

    Provo a creare questo VBA. Se non ci riesco, richiesta d'aiuto :69:

  12. #12
    L'avatar di tanimon
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    _
    Messaggi
    258
    Versione Office
    Excel 2007
    Likes ricevuti
    36
    Likes dati
    4

    Re: L'indice dei fogli di lavoro, come aggiornarlo senza perdere i dati

    Citazione Originariamente Scritto da ProgrammD69 Visualizza Messaggio
    E' proprio quello che vorrei, cioè ad un nuovo indice, il contenuto della colonna B viene ricopiato nel nuovo indice.
    Che aggiunta di VBA devo fare ?
    prima di creare il nuovo indice

    - determinare l'ultima riga di colonna B >>> CELLS(Rows.Count,"B").End(xlup).Row

    - copiare il range di colonna B >>> Range("B1:B"&UR).copy

    - incollare il range precedentemente copiato istruendo tale operazione in modo appropriato nel codice "crea indice"

    fai attenzione a quale riga di codice inserisci l'incolla range


    - creare l'indice



    Altrimenti,
    COME TI E' GIA' STATO CHIESTO,

    allega il file

    Ciao
    Frank
    Excel 2007 win7 - Ogni Progetto è composto da Micro Progetti: PRIMA risolvi quelli, e PRIMA raggiungi il completamento del Progetto!
    Domanda: "Come avranno fatto gli utilizzatori di Excel VBA, quando non esisteva il registratore di macro?"

  13. #13
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    Re: L'indice dei fogli di lavoro, come aggiornarlo senza perdere i dati

    Ho creato tramite macro questo codice VBA, che riporta in B1 dell'indice quanto scritto in A1 del Foglio1.
    Questo codice funziona solo se mi trovo nel Foglio1 e premo il pulsante collegato alla macro (che allego).
    Se mi trovo nell'indice, e metto il cursore in B1 e poi premo il pulsante, in B1 dell'indice mi scrive il nome che ha in A1 dell'indice, e non il contenuto di A1 che sta nel Foglio1.

    Come posso modificare questa macro ?

    Codice: 
    Sub AggiungiNomeInIndice()'
    
    
        ActiveCell.FormulaR1C1 = "Nome di prova del foglio 1"
        Range("A2").Select
        Columns("A:A").EntireColumn.AutoFit
        Range("A1").Select
        Selection.Copy
        Sheets("Indice").Select
        Range("B1").Select
        ActiveSheet.Paste
        Columns("B:B").EntireColumn.AutoFit
        Application.CutCopyMode = False
        Sheets("Foglio1").Select
    End Sub

    P.S.: il codice VBA che ho postato all'inizio della discussione l'ho preso da un libro. In tema di VBA sto agli inizi. Ho imparato qualcosa, ma è molto poco.

  14. #14
    L'avatar di tanimon
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    _
    Messaggi
    258
    Versione Office
    Excel 2007
    Likes ricevuti
    36
    Likes dati
    4

    Re: L'indice dei fogli di lavoro, come aggiornarlo senza perdere i dati

    ciao,
    ti è stato chiesto PIU' volte ( Rubik (ciao) per primo) di allegare un file su cui fare prove e verifiche,
    senza doverlo ricreare per te che lo hai già,

    ma io non ne ho vista neanche l'ombra.

    Personalmente considero

    chiusa e risolta

    questa richiesta.

    Frank
    Excel 2007 win7 - Ogni Progetto è composto da Micro Progetti: PRIMA risolvi quelli, e PRIMA raggiungi il completamento del Progetto!
    Domanda: "Come avranno fatto gli utilizzatori di Excel VBA, quando non esisteva il registratore di macro?"

  15. #15
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    Re: L'indice dei fogli di lavoro, come aggiornarlo senza perdere i dati

    Per il file da allegare, al più presto. L'argomento m'interessa.

  16. #16
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    41
    Messaggi
    2074
    Versione Office
    office pro 2010
    Likes ricevuti
    440
    Likes dati
    241

    Re: L'indice dei fogli di lavoro, come aggiornarlo senza perdere i dati

    In effetti. il file di esempio dovrebbe essere la PRIMA cosa che uno costruisce. Mannaggia mannaggissima mannaggerrima

    Ci vuole lo stesso tempo che a scrivere mille parole. anzi pure meno.

    In questo caso serviva aprire Excel
    Rinominare uno dei tre fogli disponibili come "indice"
    NEi rimanenti due fogli scrivere in una cella il titolo del foglio.. pare sia A1
    inserire un indice con il foglio 1 ed il foglio 2

    con l' aggiunta di qualche commento se lo ritenevi necessario.

    Tempo occupato.... !0 mnuti? nonlo so ma meno che scrivere mille thread che non hanno portato a soluzione.

    Per ora ce lo metto io il file

    Con una possibile macro cosi da tagliare la testa al toro

    Non ho inserito un pulsante perchè non sapevo dove piazzarlo. quindi ho fatto senza :D

    La macro è farcita di commenti, Più commenti che listato. Fanne tesoro. Se anche tutt ala macro fosse sbagliata ne trarresti comunque profitto ;)
    Codice: 
    Option Explicit
    
    
    Sub CreaIndice()
        ' Visto l' utilizzo, non  ha senso mantenere i dati del vecchio foglio se gia creato.
        ' Questo fa si che si possa scegliere un approcio non poco svelto per avere un foglio
        ' pulito disonibile a contenere l' indice.
        '
        ' Se rilevi un errore fai finta di niente e prosegui
        On Error Resume Next
            'Non avvertirmi di quello che fai
            Application.DisplayAlerts = False
            ' Cancella il foglio che porta il nome di "indice".
            ThisWorkbook.Sheets("Indice").Delete
            ' Ora mi devi avvertire se combino qualcosa di strano ;)
            Application.DisplayAlerts = True
        ' Da ora in poi se vai in errore per qualche motivo non devi più fare finta di niente
        On Error GoTo 0
        '
        'Ora che il foglio di nome "indice" siamo certi non esserci più lo possiamo creare
        ' Dichiariamo una variabile per riferirsi al foglio per comodità
        Dim FoglioIndice As Worksheet
        'istanziamo un foglio fiammante
        Set FoglioIndice = ThisWorkbook.Sheets.Add
        '
        'Riferendoci ad esso, il nostro Foglioindice
        With FoglioIndice
            .Name = "Indice"
            'Magari mettiamolo come primo della lista
            .Move before:=Sheets(1)
            ' E poi?... Poi nonmi viene in mente altro per ora  :D
        End With
        
        'Ora abbiamo un foglio di nome indice che si trova in prima posizione e tutti gli altri che seguono
        '
        ' Potremmo metterli in ordine, dal primo a sinistra all' ultimo a destra
        '  *** Qui il listato di istruzioni per ordinare i fogli***
        '
        'Cicliamo tutti i fogli rimasti in modo da prelevarne i dati che ci servono:
        ' Per farlo ci serve una variabile per il ciclo FOR
        Dim Ciclo As Long
        'Ora possiamo ciclare tutti i fogli che non sono quello denominato "indice"
        'Di fatto tutti quelli dopo il primo foglio
        For Ciclo = 2 To ThisWorkbook.Sheets.Count
            'andiamo a prelevare quanto scritto in cella A1
            'e copiamolo nelal prima colonna dell' indice
            FoglioIndice.Cells(ThisWorkbook.Sheets(Ciclo).Index, 1).Value = ThisWorkbook.Sheets(Ciclo).Cells(1, 1).Value
            'andiamo a prelevarne il nome dell' etichetta
            ' e lo posizioniamo in seconda colonna dell' indice
            FoglioIndice.Cells(ThisWorkbook.Sheets(Ciclo).Index, 2).Value = ThisWorkbook.Sheets(Ciclo).Name
            'e gia che ci siamo inseriamo anceh un link al foglio
            'in cella A1
            FoglioIndice.Hyperlinks.Add Anchor:=FoglioIndice.Cells(ThisWorkbook.Sheets(Ciclo).Index, 2), Address:="", SubAddress:= _
            ThisWorkbook.Sheets(Ciclo).Name & "!A1", TextToDisplay:=ThisWorkbook.Sheets(Ciclo).Name
            'Ed ora facciamo un pò di largo fra le celle
            FoglioIndice.Cells.EntireColumn.AutoFit
        Next
    End Sub

    link al file di esempio
    ProvaIndice.xlsm

  17. I seguenti utenti hanno dato un "Like"


  18. #17
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    Re: L'indice dei fogli di lavoro, come aggiornarlo senza perdere i dati

    Citazione Originariamente Scritto da dracoscrigno Visualizza Messaggio
    In effetti. il file di esempio dovrebbe essere la PRIMA cosa che uno costruisce. Mannaggia mannaggissima mannaggerrima

    Ci vuole lo stesso tempo che a scrivere mille parole. anzi pure meno.

    In questo caso serviva aprire Excel
    Rinominare uno dei tre fogli disponibili come "indice"
    NEi rimanenti due fogli scrivere in una cella il titolo del foglio.. pare sia A1
    inserire un indice con il foglio 1 ed il foglio 2

    con l' aggiunta di qualche commento se lo ritenevi necessario.

    Tempo occupato.... !0 mnuti? nonlo so ma meno che scrivere mille thread che non hanno portato a soluzione.

    Per ora ce lo metto io il file

    Con una possibile macro cosi da tagliare la testa al toro

    Non ho inserito un pulsante perchè non sapevo dove piazzarlo. quindi ho fatto senza :D

    La macro è farcita di commenti, Più commenti che listato. Fanne tesoro. Se anche tutt ala macro fosse sbagliata ne trarresti comunque profitto ;)
    Codice: 
    Option Explicit
    
    
    Sub CreaIndice()
        ' Visto l' utilizzo, non  ha senso mantenere i dati del vecchio foglio se gia creato.
        ' Questo fa si che si possa scegliere un approcio non poco svelto per avere un foglio
        ' pulito disonibile a contenere l' indice.
        '
        ' Se rilevi un errore fai finta di niente e prosegui
        On Error Resume Next
            'Non avvertirmi di quello che fai
            Application.DisplayAlerts = False
            ' Cancella il foglio che porta il nome di "indice".
            ThisWorkbook.Sheets("Indice").Delete
            ' Ora mi devi avvertire se combino qualcosa di strano ;)
            Application.DisplayAlerts = True
        ' Da ora in poi se vai in errore per qualche motivo non devi più fare finta di niente
        On Error GoTo 0
        '
        'Ora che il foglio di nome "indice" siamo certi non esserci più lo possiamo creare
        ' Dichiariamo una variabile per riferirsi al foglio per comodità
        Dim FoglioIndice As Worksheet
        'istanziamo un foglio fiammante
        Set FoglioIndice = ThisWorkbook.Sheets.Add
        '
        'Riferendoci ad esso, il nostro Foglioindice
        With FoglioIndice
            .Name = "Indice"
            'Magari mettiamolo come primo della lista
            .Move before:=Sheets(1)
            ' E poi?... Poi nonmi viene in mente altro per ora  :D
        End With
        
        'Ora abbiamo un foglio di nome indice che si trova in prima posizione e tutti gli altri che seguono
        '
        ' Potremmo metterli in ordine, dal primo a sinistra all' ultimo a destra
        '  *** Qui il listato di istruzioni per ordinare i fogli***
        '
        'Cicliamo tutti i fogli rimasti in modo da prelevarne i dati che ci servono:
        ' Per farlo ci serve una variabile per il ciclo FOR
        Dim Ciclo As Long
        'Ora possiamo ciclare tutti i fogli che non sono quello denominato "indice"
        'Di fatto tutti quelli dopo il primo foglio
        For Ciclo = 2 To ThisWorkbook.Sheets.Count
            'andiamo a prelevare quanto scritto in cella A1
            'e copiamolo nelal prima colonna dell' indice
            FoglioIndice.Cells(ThisWorkbook.Sheets(Ciclo).Index, 1).Value = ThisWorkbook.Sheets(Ciclo).Cells(1, 1).Value
            'andiamo a prelevarne il nome dell' etichetta
            ' e lo posizioniamo in seconda colonna dell' indice
            FoglioIndice.Cells(ThisWorkbook.Sheets(Ciclo).Index, 2).Value = ThisWorkbook.Sheets(Ciclo).Name
            'e gia che ci siamo inseriamo anceh un link al foglio
            'in cella A1
            FoglioIndice.Hyperlinks.Add Anchor:=FoglioIndice.Cells(ThisWorkbook.Sheets(Ciclo).Index, 2), Address:="", SubAddress:= _
            ThisWorkbook.Sheets(Ciclo).Name & "!A1", TextToDisplay:=ThisWorkbook.Sheets(Ciclo).Name
            'Ed ora facciamo un pò di largo fra le celle
            FoglioIndice.Cells.EntireColumn.AutoFit
        Next
    End Sub

    link al file di esempio
    ProvaIndice.xlsm

    Il codice non funziona. Da errore alla riga:

    FoglioIndice.Cells(ThisWorkbook.Sheets(Ciclo).Index, 1).Value = ThisWorkbook.Sheets(Ciclo).Cells(1, 1).Value

    Inoltre, il mio caso non è il creare l'indice, dato che il comando ce l'ho già, ma aggiungere nuovi fogli all'indice in colonna A riportando ogni volta il nome dei fogli nella corrispondente colonna B.

  19. #18
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    41
    Messaggi
    2074
    Versione Office
    office pro 2010
    Likes ricevuti
    440
    Likes dati
    241

    Re: L'indice dei fogli di lavoro, come aggiornarlo senza perdere i dati

    Citazione Originariamente Scritto da ProgrammD69 Visualizza Messaggio
    Il codice non funziona. Da errore alla riga:

    FoglioIndice.Cells(ThisWorkbook.Sheets(Ciclo).Index, 1).Value = ThisWorkbook.Sheets(Ciclo).Cells(1, 1).Value
    Srano. ho appena scaricato il file che io stesso ho allegato ed ho lanciato al macro una decina di volte senza che capitasse niente particolare, salvo questo incolonnamento:

    Titolo del foglio 7 Foglio7
    Titolo del foglio 1 Foglio1
    Titolo del foglio 2 Foglio2
    Titolo del foglio 3 Foglio3
    Titolo del foglio 4 Foglio4
    Titolo del foglio 5 Foglio5
    Titolo del foglio 6 Foglio6
    Titolo del foglio 8 Foglio8
    Titolo del foglio 9 Foglio9
    Titolo del foglio 10 Foglio10
    Titolo del foglio 11 Foglio11
    Titolo del foglio 14 Foglio12
    Titolo del foglio 13 Foglio13
    Titolo del foglio 14 Foglio14
    Citazione Originariamente Scritto da ProgrammD69 Visualizza Messaggio
    Inoltre, il mio caso non è il creare l'indice, dato che il comando ce l'ho già, ma aggiungere nuovi fogli all'indice in colonna A riportando ogni volta il nome dei fogli nella corrispondente colonna B..
    Io l' ho capito che tu hai gia un listato ceh ti crea un indice ed ora ne vuoi un altro pezzo che te lo aggiorni ma a mio modestissimo avviso, il concetto di aggiornare e creare, nell' ambito degli indici di tutti i libri di questo mondo, ha lo stesso significato:

    Strappo il foglio, lo getto nel cestino e scrivo un nuovo foglio. il bello dei fogli excel è che non si vede che lo hai strappato.
    .

    Comuqnue, nel file proposto ci sono abbastanza, credo, commenti, da darti modo di utilizzare il pezzo di listato che meglio credi. MAnca solo una parte, quelal riguardante l' ordinamento dei fogli e dell' indice, nel caso sia necessario. Però c'è commentato dove dovrebbe avvenire nel caso indice e fogli dovessero essere vicendevolmente ordinati.

  20. #19
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    Re: L'indice dei fogli di lavoro, come aggiornarlo senza perdere i dati

    Citazione Originariamente Scritto da dracoscrigno Visualizza Messaggio
    Srano. ho appena scaricato il file che io stesso ho allegato ed ho lanciato al macro una decina di volte senza che capitasse niente particolare
    Ho provato ad eseguire la macro aprendo la finestra Macro e poi scelta la macro Esegui. Funziona.
    Se invece, porto la macro in un file .xlsb dove conservo tutte le macro e su questo creo un pulsante sulla barra multifunzione (vedi la discussione: http://www.forumexcel.it/forum/6-dom...zione-di-excel),
    cliccando quel pulsante il codice VBA non funziona. Esce l'errore che ho segnalato prima.
    Dov'è il problema ?

  21. #20
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    41
    Messaggi
    2074
    Versione Office
    office pro 2010
    Likes ricevuti
    440
    Likes dati
    241

    Re: L'indice dei fogli di lavoro, come aggiornarlo senza perdere i dati

    Citazione Originariamente Scritto da ProgrammD69 Visualizza Messaggio
    ...Esce l'errore che ho segnalato prima.
    Dov'è il problema ?

    Non saprei. perchè l' errore che non hai segnalato prima lo hai segnalato in questo modo:

    Citazione Originariamente Scritto da ProgrammD69 Visualizza Messaggio
    Il codice non funziona. Da errore alla riga:

    FoglioIndice.Cells(ThisWorkbook.Sheets(Ciclo).Index, 1).Value = ThisWorkbook.Sheets(Ciclo).Cells(1, 1).Value

    Sapere anche QUALE errore sarebbe un grande aiuto per aiutarti.

    Comunque non da me, purtroppo :(
    I file Xlsb, a parte sapere che la "b" sta per binario, non so che peculiarità hanno e perchè certe istruzioni non sono ammesse.


    A spanne mi verrebbe da pensare che sia un fatto di riferimenti. forse che "Thisbooks", in quell' ambito, non sia più certamente il book aperto e dove vuoi far funzionare la macro? Davvero. questa cosa la ignoro.


    O che si trova cambia l' istruzione in qualcos' altro (a quest ora non riesco a pensarci molto. sto sbadigliando :166: )


    Però ho appenanotato che ho scritto una roba inutile e quindi eccoti la correzione del ciclo FOR:

    Codice: 
        For Ciclo = 2 To ThisWorkbook.Sheets.Count
            'andiamo a prelevare quanto scritto in cella A1
            'e copiamolo nelal prima colonna dell' indice
            FoglioIndice.Cells(Ciclo, 1).Value = ThisWorkbook.Sheets(Ciclo).Cells(1, 1).Value
            'andiamo a prelevarne il nome dell' etichetta
            ' e lo posizioniamo in seconda colonna dell' indice
            FoglioIndice.Cells(Ciclo, 2).Value = ThisWorkbook.Sheets(Ciclo).Name
            'e gia che ci siamo inseriamo anceh un link al foglio
            'in cella A1
            FoglioIndice.Hyperlinks.Add Anchor:=FoglioIndice.Cells(Ciclo, 2), Address:="", SubAddress:= _
            ThisWorkbook.Sheets(Ciclo).Name & "!A1", TextToDisplay:=ThisWorkbook.Sheets(Ciclo).Name
            'Ed ora facciamo un pò di largo fra le celle
            FoglioIndice.Cells.EntireColumn.AutoFit
        Next
    Dice le stesse cose ma le dice in modo migliore.
    Tra le correzioni c'è anche la riga che hai segnalato.

    Vabbè. ora devo addormentarmi prima di impazzire un altro pò di più :D :D :D :D

  22. #21
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    Re: L'indice dei fogli di lavoro, come aggiornarlo senza perdere i dati

    Citazione Originariamente Scritto da dracoscrigno Visualizza Messaggio
    Non saprei. perchè l' errore che non hai segnalato prima lo hai segnalato in questo modo:




    Sapere anche QUALE errore sarebbe un grande aiuto per aiutarti.

    Comunque non da me, purtroppo :(
    I file Xlsb, a parte sapere che la "b" sta per binario, non so che peculiarità hanno e perchè certe istruzioni non sono ammesse.


    A spanne mi verrebbe da pensare che sia un fatto di riferimenti. forse che "Thisbooks", in quell' ambito, non sia più certamente il book aperto e dove vuoi far funzionare la macro? Davvero. questa cosa la ignoro.

    O che si trova cambia l' istruzione in qualcos' altro (a quest ora non riesco a pensarci molto. sto sbadigliando :166: )
    Ho inserito nel file .xlsb il tuo codice VBA aggiornato.
    Quando clicco sul pulsante Crea Indice, collegato al tuo codice VBA, mi da il seguente errore:

    Espressione: Value
    Valore: Espressione non definita nel contesto
    Tipo: Empty
    Contesto: Modulo18.CreaIndice

    Questo lo ricavo dalle espressioni di controllo della maschera VBA.
    Mi sai dire qualcosa ?
    C'è qualche esperto del forum che può intervenire ?

  23. #22
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    41
    Messaggi
    2074
    Versione Office
    office pro 2010
    Likes ricevuti
    440
    Likes dati
    241

    Re: L'indice dei fogli di lavoro, come aggiornarlo senza perdere i dati

    Ho ricreato il file.Xlsb
    l' ho posizionato nel percorso C:\Utenti\<nomeutente>\AppData\Roaming\Microsoft\Excel\XLSTART come indicato qui.

    poi sono andato sul descktop dove avevo parcheggiato un file.Xlsm per fare le dovute prove di debug

    Il risultato finale, per il quale credo che aprirò un thread nuovo mi ha portato a correggere alcune istruzioni a tentativi al limite della bestemmia in sanscrito fino ad arrivare ad una soluzione che mi ha fatto funzionare tutto:


    Codice: 
    Sub CreaIndice()    'Prima di tutto memorizzo il file Excel che sto adoperando dentro una variabile
        'Perchè, poi, THISWORKBOOK mi restituisce il file contenente la macro
        ''Questo modo non credo sia la soluzione ma un semplice escamotage per aggirare
        ' un problema che non ho capito
        Dim QuestoFile As Workbook
        Set QuestoFile = Workbooks(Worksheets(1).Parent.Name)
        
        ' Visto l' utilizzo, non  ha senso mantenere i dati del vecchio foglio se gia creato.
        ' Questo fa si che si possa scegliere un approcio non poco svelto per avere un foglio
        ' pulito disonibile a contenere l' indice.
        '
        ' Se rilevi un errore fai finta di niente e prosegui
        On Error Resume Next
            'Non avvertirmi di quello che fai
            Application.DisplayAlerts = False
            ' Cancella il foglio che porta il nome di "indice".
            QuestoFile.Sheets("Indice").Delete
            ' Ora mi devi avvertire se combino qualcosa di strano ;)
            Application.DisplayAlerts = True
        ' Da ora in poi se vai in errore per qualche motivo non devi più fare finta di niente
        On Error GoTo 0
        '
        'Ora che il foglio di nome "indice" siamo certi non esserci più lo possiamo creare
        ' Dichiariamo una variabile per riferirsi al foglio per comodità
        Dim FoglioIndice As Worksheet
        'istanziamo un foglio fiammante
        Set FoglioIndice = QuestoFile.Sheets.Add
        '
        'Riferendoci ad esso, il nostro Foglioindice
        With FoglioIndice
            .Name = "Indice"
            'Magari mettiamolo come primo della lista
            .Move Before:=QuestoFile.Worksheets(1)
            ' E poi?... Poi nonmi viene in mente altro per ora  :D
        End With
        
        'Ora abbiamo un foglio di nome indice che si trova in prima posizione e tutti gli altri che seguono
        '
        ' Potremmo metterli in ordine, dal primo a sinistra all' ultimo a destra
        '  *** Qui il listato di istruzioni per ordinare i fogli***
        '
        'Cicliamo tutti i fogli rimasti in modo da prelevarne i dati che ci servono:
        ' Per farlo ci serve una variabile per il ciclo FOR
        Dim Ciclo As Long
        'Ora possiamo ciclare tutti i fogli che non sono quello denominato "indice"
        'Di fatto tutti quelli dopo il primo foglio
        For Ciclo = 2 To QuestoFile.Sheets.Count
            'andiamo a prelevare quanto scritto in cella A1
            'e copiamolo nelal prima colonna dell' indice
            FoglioIndice.Cells(QuestoFile.Sheets(Ciclo).Index, 1) = QuestoFile.Sheets(Ciclo).Cells(1, 1)
            'andiamo a prelevarne il nome dell' etichetta
            ' e lo posizioniamo in seconda colonna dell' indice
            FoglioIndice.Cells(QuestoFile.Sheets(Ciclo).Index, 2) = QuestoFile.Sheets(Ciclo).Name
            'e gia che ci siamo inseriamo anceh un link al foglio
            'in cella A1
            FoglioIndice.Hyperlinks.Add Anchor:=FoglioIndice.Cells(QuestoFile.Sheets(Ciclo).Index, 2), Address:="", SubAddress:= _
            QuestoFile.Sheets(Ciclo).Name & "!A1", TextToDisplay:=QuestoFile.Sheets(Ciclo).Name
            'Ed ora facciamo un pò di largo fra le celle
            FoglioIndice.Cells.EntireColumn.AutoFit
        Next
    End Sub

    Oggi non ho più tempo (sono gia in ritardo di 2 ore sugl' impegni presi e quindi scappo e ci si legge a pezzi sul cellulare durante la giornata...

    P.s
    Studialo un pochino il listato. Se son riuscito io a modificarlo un pochino per farlo funzionare dovresti riuscirci pure tu. Siamo fatti della stessa pasta dopotutto.


    Ancora in bocca al lupo per il file e buon fine settimana a tutti :)

  24. #23
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    Re: L'indice dei fogli di lavoro, come aggiornarlo senza perdere i dati

    Il codice FUNZIONA !!!
    Prima evidentemente avevo creato il pulsante "Crea Indice" stando nel file excel .xlsx
    Stavolta, invece, dopo aver caricato il codice VBA nel file Personal.xlsb, sempre stando in questo file ho creato l'icona "Crea Indice" nella barra multifunzione. Credo che era questo il problema. :92:

    Poi, per la cronaca, avendo in XLSTART un file .xlsb che contiene tutte le macro che vuoi, non serve più convertire il file .xlsx in un file .xlsm

    C'è solo da sistemare il titolo della colonna A e della colonna B dell'indice che si crea.
    In colonna A ci va il titolo presente in A1 di tutti i fogli, mentre in colonna B ci va il nome dell'etichetta del foglio(da togliere gli spazi tra le parole altrimenti cliccandoci sopra il collegamento non funziona), per cui nell'indice in A1 metterei "titolo del foglio", ed in B1 metterei "collegamento".

    Ci voglio provare ad implementare queste ultime cose.

    Per eventuali altri approfondimenti, apriremo altre discussioni.

  25. #24
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    41
    Messaggi
    2074
    Versione Office
    office pro 2010
    Likes ricevuti
    440
    Likes dati
    241

    Re: L'indice dei fogli di lavoro, come aggiornarlo senza perdere i dati

    no. il problema non è aver creato il pulsante in questo o quel foglio. il problema è il listato che era scritto in modo inappropriato e credo che anche ora non sia miss mondo.

    ho ricreato le condizioni in cui lavori tu ed ho ricevuto una serie di errori che approfondiremo nella prossima discussione che aprirò.

    ...
    a parte questo se, da quello che leggo, credi di aver risolto questo thread.
    sarebbe cosa gradita se impostassi lo stesso come [risolto].

    ciao :)

  26. #25
    ProgrammD69
    Ospite L'avatar di ProgrammD69

    Re: L'indice dei fogli di lavoro, come aggiornarlo senza perdere i dati

    Citazione Originariamente Scritto da dracoscrigno Visualizza Messaggio
    no. il problema non è aver creato il pulsante in questo o quel foglio. il problema è il listato che era scritto in modo inappropriato e credo che anche ora non sia miss mondo.

    ho ricreato le condizioni in cui lavori tu ed ho ricevuto una serie di errori che approfondiremo nella prossima discussione che aprirò.

    ...
    a parte questo se, da quello che leggo, credi di aver risolto questo thread.
    sarebbe cosa gradita se impostassi lo stesso come [risolto].

    ciao :)
    Effettivamente qualche errore l'ho notato poco fa, quando ho provato a spostare di posizione un Grafico nella cartella di lavoro.
    Creando l'indice con il tuo VBA, il Grafico lo mette all'inizio, in prima posizione. Se poi il foglio del grafico lo sposto, e rilancio la creazione dell'indice esce errore. Meglio non toccare quel che funziona. A me va già bene così !!!

    Comunque, per approfondimenti su questo tema, apriamo anche un'altra discussione.

    Questa discussione è RISOLTA.

  27. #26
    L'avatar di cianricc
    Clicca e Apri
    Data Registrazione
    Jan 2017
    Località
    grosotto (so)
    Età
    60
    Messaggi
    50
    Versione Office
    office 2010-16
    Likes ricevuti
    2
    Likes dati
    36

    Re: L'indice dei fogli di lavoro, come aggiornarlo senza perdere i dati

    Citazione Originariamente Scritto da dracoscrigno Visualizza Messaggio
    no. il problema non è aver creato il pulsante in questo o quel foglio. il problema è il listato che era scritto in modo inappropriato e credo che anche ora non sia miss mondo.

    ho ricreato le condizioni in cui lavori tu ed ho ricevuto una serie di errori che approfondiremo nella prossima discussione che aprirò.

    ...
    a parte questo se, da quello che leggo, credi di aver risolto questo thread.
    sarebbe cosa gradita se impostassi lo stesso come [risolto].

    ciao :)
    salve
    so che la vostra passione per excel vi fa a volte perdere il senso del tempo ma perchè sprecarlo con utilizzatori del forum che non rispettano le regole fondamentali dello stesso?
    se uno, oltretutto se richiesto, non posta il suo file di esempio o non segue altre regole per me è "diseducativo" continuare nel dargli risposte, anche se l'argomento può essere intrigante...
    sbaglio?

  28. I seguenti utenti hanno dato un "Like"


Discussioni Simili

  1. [Risolto] Copia foglio su file diversi senza perdere formattazione
    Di giampi nel forum Domande su Excel in generale
    Risposte: 7
    Ultimo Messaggio: 06/03/17, 00:11
  2. [Risolto] Implementare macro per eliminazione dati dai fogli di lavoro
    Di ceskonet13 nel forum Domande su Excel VBA e MACRO
    Risposte: 14
    Ultimo Messaggio: 12/02/17, 17:02
  3. Risposte: 8
    Ultimo Messaggio: 02/02/17, 10:17
  4. Scrivere nella cella senza perdere la formula
    Di carega83 nel forum Domande su Excel in generale
    Risposte: 10
    Ultimo Messaggio: 16/03/16, 22:35
  5. [Domanda]multipli cognomi da colonna a riga senza perdere il nome
    Di gaso nel forum Domande su Excel in generale
    Risposte: 7
    Ultimo Messaggio: 23/12/15, 19:22

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •