Cancellazione nomi da foglio



  • Cancellazione nomi da foglio
    di Tullio (utente non iscritto) data: 06/11/2013 11:13:34

    Ciao a tutti,
    ancora una volta ricorro al vostro immenso sapere per capire perché la Sub che allego funziona così com'è e non funziona invece se remmo il primo If e lavoro con il secondo.
    In pratica al salvataggio del foglio "Fattura" oltre al VBA cancello anche i nomi del foglio, eccetto l'area di stampa, altrimenti quando lo ricarico entrano in conflitto.
    Diciamo che può essere una questione di lana caprina ma anziché indicare il Range mi parrebbe più professionale indicare il nome.
    Grazie a tutti in anticipo.
    Tullio


     
    Public Sub cancella_nomi()
    Dim wk As Workbook
    Dim nome As Name
    
    Set wk = ActiveWorkbook
    
    With wk
    For Each nome In .Names
        If .Names(nome.Name) <> "=Fattura!$B$2:$H$65" Then
        'If .Names(nome.Name) <> "=Fattura!Print_Area" Then
            .Names(nome.Name).Delete
        End If
    Next
    End With
    
    Set nome = Nothing
    Set wk = Nothing
    
    End Sub
    



  • di patel data: 06/11/2013 12:39:55

    come risponderti senza vedere il file ? probabilmente non è corretto "=Fattura!Print_Area"





  • di patel data: 06/11/2013 12:44:16

    forse il nome corretto è Fattura!Area_stampa





  • di Tullio (utente non iscritto) data: 06/11/2013 13:01:14

    Nessuno dei due funziona, il nome l'ho trovato bloccando l'esecuzione della macro e facendoglielo scrivere, oppure spostando il cursore sul nome. Per fare una prova basterebbe che tu dessi come area di stampa di un foglio qualsiasi il Range B2:H65.



  • di Vecchio Frac data: 06/11/2013 14:16:03

    Prova così.
    In effetti indicare il nome (sia normale, print_area, che localizzato, area_stampa) va bene.
     
        For Each nome In .Names
            If LCase(nome.NameLocal) <> "fattura!area_stampa" Then nome.Delete
        Next






  • di Tullio (utente non iscritto) data: 06/11/2013 16:08:26

    Vecchio frac,
    non avevo il minimo dubbio, sapevo che la tua soluzione sarebbe stata il raggiungimento del risultato.
    Grazie.
    Ora il problema mi si presenta con i "collegamenti che non possono essere aggiornati" avresti per caso due righe.....
    Di nuovo.
    Tullio


  • Cancellazione nomi da foglio
    di Tullio (utente non iscritto) data: 06/11/2013 11:38:30

    Ciao a tutti,
    scusate ma forse ho postato il precedente messaggio in area sbagliata.
    Ancora una volta ricorro al vostro immenso sapere per capire perché la Sub che allego funziona così com'è e non funziona invece se remmo il primo If e lavoro con il secondo.
    In pratica al salvataggio del foglio "Fattura" oltre al VBA cancello anche i nomi del foglio, eccetto l'area di stampa, altrimenti quando lo ricarico entrano in conflitto.
    Diciamo che può essere una questione di lana caprina ma anziché indicare il Range mi parrebbe più professionale indicare il nome.
    Grazie a tutti in anticipo.
    Tullio
     
    Public Sub cancella_nomi()
    Dim wk As Workbook
    Dim nome As Name
    
    Set wk = ActiveWorkbook
    
    With wk
    For Each nome In .Names
        If .Names(nome.Name) <> "=Fattura!$B$2:$H$65" Then
        'If .Names(nome.Name) <> "=Fattura!Print_Area" Then
            .Names(nome.Name).Delete
        End If
    Next
    End With
    
    Set nome = Nothing
    Set wk = Nothing
    



  • di Vecchio Frac data: 06/11/2013 13:45:19

    Discussione doppia, come tu stesso ammetti.
    Non importa se hai postato nell'altro forum, la distinzione non è così ferrea, è importante però evitare di duplicare thread perchè così si genera solo confusione.
    Quindi, chiudo questo "filone" e lasciamo aperto l'altro, a cui peraltro ci sono già delle risposte.