Condividi tramite

Eliminare colonne tabella su più fogli

Anonimo
2019-04-11T06:11:11+00:00

Salve a tutti!

Ho un piccolo problema in quanto avrei bisogno di una Macro in grado di eliminare le colonne di ogni tabella di ogni foglio (ad eccezione di alcuni).

Ho creato diverse tabelle per ogni foglio di lavoro.

Le tabelle sono tutte uguali tra di loro e di conseguenza anche i fogli sono tutti uguali tra di loro (ad eccezione di alcuni)

Le colonne da eliminare sono 5 (da "AE" a "AI").

Potrei farlo a mano ma si tratterebbe di eliminare

colonne da poco più di 250 tabelle... 

Preciso che ho bisogno di eliminare solo le colonne delle tabelle

Con Macro si potrebbe fare?

Allego un  file.

La scheda "RISULTATO" rappresenta come vorrei che venisse (ho eliminato manualmente le colonne di ogni singola tabella da "AE" a "AI", ovvero 5 colonne in totale).

Tutte le altre schede sono da modificare...

Si potrebbe automatizzare in qualche modo questa procedura?

Grazie mille a tutti!!

https://www.dropbox.com/s/3d6puhp4iffkmxh/TEST2.xlsx?dl=0

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2019-04-11T18:30:58+00:00

Prova con qualcosa del genere:

'---

Sub EliminaColonneTabelle()

   Const sTitoliColonneDaEliminare As String = "AE,AF,AG,AH,AI,Colonna6"

   Dim ws As Worksheet

   Dim oLo As ListObject

   Dim arrTitoliColonneDaEliminare As Variant, v As Variant

   arrTitoliColonneDaEliminare = Split(sTitoliColonneDaEliminare, ",")

   On Error GoTo Errore

   With Application

      .Calculation = xlCalculationManual

      .ScreenUpdating = False

      .EnableEvents = False

   End With

   For Each ws In ThisWorkbook.Worksheets

      Select Case ws.Name

         Case "Foglio1", "Foglio2"

            'Per i fogli elencati qui sopra non viene eseguita alcuna azione

         Case Else

            'tutti i fogli con un nome differente da quelli indicati nel precedente Case verranno lavorati

            For Each oLo In ws.ListObjects

               With oLo

                  For Each v In arrTitoliColonneDaEliminare

                     If Not IsError(Application.Match(v, .HeaderRowRange, 0)) Then

                        .ListColumns(v).Delete

                     End If

                  Next v

               End With

            Next oLo

      End Select

   Next ws

Riprendi:

   With Application

      .Calculation = xlCalculationAutomatic

      .ScreenUpdating = True

      .EnableEvents = True

   End With

   Exit Sub

Errore:

   MsgBox "Errore " & Err.Number & vbNewLine & Err.Description, vbCritical, "Errore VBA"

   Resume Riprendi

End Sub

'---

Nota che in questa costante:

Const sTitoliColonneDaEliminare As String = "AE,AF,AG,AH,AI,Colonna6"

Vanno riportati i titoli delle colonne per cui si vuole effettuare l'eliminazione delimitati da una virgola e senza spazi tra un titolo e il successivo delimitato dalla virgola.

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

2 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2019-04-12T06:14:50+00:00

    Prego :)

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2019-04-11T18:40:48+00:00

    Grazie mille!!!

    Pensavo fosse impossibile 😂😂

    Grazie mille ancora!!

    La risposta è stata utile?

    0 commenti Nessun commento