Excel VBA - Supprimer les lignes vides dans la table
Je suis en train de lancer une macro qui sélectionne les cellules vides dans une colonne de table et supprime la totalité de la ligne.
Le script ci-dessous fait tout, sauf la suppression de la partie, ce qui pousse un run-time error 1004 - "Delete method of Range class failed"
.
Toute idée comment résoudre ce problème? Grâce
Sub test()
Range("Table1[[New]]").Activate
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.EntireRow.Delete
End Sub
source d'informationauteur user91240192094
Vous devez vous connecter pour publier un commentaire.
Belle question! Sans une table,
.EntireRow.Delete
fonctionne toujours, mais à l'intérieur d'un tableau on dirait que ça ne marche pas.Cela fonctionne:
En fait vous pouvez le faire en une seule passe, mais vous devez utiliser le
ListObject
objet et de sonDataBodyRange
etListColumns
propriétés:Étape 1: Faire un helper colonne de la table où vous vérifiez tous les champs vides de cette ligne. Par exemple, si vous aviez 3 colonnes de votre tableau: Un (des Prix), B (Quantité), et C (Coût), vous devez ajouter une quatrième colonne D et l'étiquette "Tout Blancs?". L'équation serait
=IF(OR(ISBLANK([@Price]),ISBLANK([@Quantity]),ISBLANK([@Cost])),"Yes","No")
Qui vous donnerait une colonne de filtre pour afficher tous les blancs.
Étape 2: Dans VBA vous pouvez alors effectuer les opérations suivantes:
C'est essentiellement de filtrage pour les lignes que vous souhaitez supprimer dans la table à l'aide de l'assistant colonne, sélectionnez toutes les données visibles dans le tableau, et unfiltering la table. J'étais à la recherche autour de la façon de supprimer toutes les lignes visibles dans une table et trouvé cela et trafiqué autour jusqu'à ce que j'ai compris que ce serait le travail. De prendre et de le combiner avec un assistant de colonne pour sélectionner toutes les lignes avec des trous semble que ce que tu voulais.
Adapter les réponses précédentes: